{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Microchip 1</th>\n",
       "      <th>Microchip 2</th>\n",
       "      <th>Accepted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.051267</td>\n",
       "      <td>0.69956</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.092742</td>\n",
       "      <td>0.68494</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.213710</td>\n",
       "      <td>0.69225</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.375000</td>\n",
       "      <td>0.50219</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.513250</td>\n",
       "      <td>0.46564</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Microchip 1  Microchip 2  Accepted\n",
       "0     0.051267      0.69956         1\n",
       "1    -0.092742      0.68494         1\n",
       "2    -0.213710      0.69225         1\n",
       "3    -0.375000      0.50219         1\n",
       "4    -0.513250      0.46564         1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "path = '../data_files/data/ex2data2.txt'\n",
    "data2 = pd.read_csv(path,header=None,names=['Microchip 1','Microchip 2','Accepted'])\n",
    "data2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Microchip 1</th>\n",
       "      <th>Microchip 2</th>\n",
       "      <th>Accepted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>118.000000</td>\n",
       "      <td>118.000000</td>\n",
       "      <td>118.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.054779</td>\n",
       "      <td>0.183102</td>\n",
       "      <td>0.491525</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.496654</td>\n",
       "      <td>0.519743</td>\n",
       "      <td>0.502060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-0.830070</td>\n",
       "      <td>-0.769740</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-0.372120</td>\n",
       "      <td>-0.254385</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>-0.006336</td>\n",
       "      <td>0.213455</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.478970</td>\n",
       "      <td>0.646562</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.070900</td>\n",
       "      <td>1.108900</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Microchip 1  Microchip 2    Accepted\n",
       "count   118.000000   118.000000  118.000000\n",
       "mean      0.054779     0.183102    0.491525\n",
       "std       0.496654     0.519743    0.502060\n",
       "min      -0.830070    -0.769740    0.000000\n",
       "25%      -0.372120    -0.254385    0.000000\n",
       "50%      -0.006336     0.213455    0.000000\n",
       "75%       0.478970     0.646562    1.000000\n",
       "max       1.070900     1.108900    1.000000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAHfCAYAAAARGm3sAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X90XOV97/vPd2ZILcm6FnE0B9XgQrGWkxQF2iuCFbwOslt8qEtIE+gR9x4uv5yy7lo5d4V6wYHQcg7pOtRtyDopK+nKOl5OjtM0P3QakpJDlEAwyD0GxVSGYJEfYE8xxYgiYSqQJRE6muf+MTOOLI2kLWn27/drLS/v2fNs6ztb2zPfefb3eR5zzgkAAABAMDJhBwAAAACkCQk4AAAAECAScAAAACBAJOAAAABAgEjAAQAAgACRgAMAAAABIgEHAAAAAkQCDgAAAASIBBwAAAAIUC7sAPz2nve8x5177rlhhwEAAICEO3To0OvOudbF2iU+AT/33HM1ODgYdhgAAABIODN7yUs7SlAAAACAAJGAAwAAAAEiAQcAAAAClPgacAAAACzuX//1X3X8+HG9/fbbYYcSeatWrdLZZ5+tM844Y1nHk4ADAABAx48fV3Nzs84991yZWdjhRJZzTidOnNDx48d13nnnLevfoAQFAAAAevvtt7V27VqS70WYmdauXbuiOwUk4AAAAJAkkm+PVnqeSMABAACwLN3d3eru7g47jNghAQcAAEAkjI+Pq6mpSePj4778+/39/Tp27Jjn9n59uSABBwAAQCQ89thjeuedd/T444/78u8vNQH3C7OgAAAAwLOZvcL79++fs6+/v3/Z//YPfvADfeITn9APfvADbdu2TTfeeKNeeukltba2qre3V2Y2Z59zTtdff71effVVXXTRRfqrv/or3XjjjXrrrbf0yiuvaNOmTbr//vt1/fXXq7+/Xw888IB+4zd+Q9/85jf12muv6YYbbtC//Mu/6Pd///f1qU99Sk8//bQ+/vGPq62tTa+99tqyX8tC6AEHAABAJPT39+vuu+/W3//932v37t268MILNTAwoKuuukqHDx+ed98FF1ygJ554Qq+++qoOHz4sSfrYxz6mgwcP6oUXXtDTTz+tv/7rv9bNN9+sz3/+8/rmN78pSdq1a5euvfZaHTx4UA8++KBOnDihP/mTP9GXvvQlfeMb3/AtAacHHAAAAJ7N7OGu9nyvpNe76oUXXtA///M/6+qrr9Yrr7yi73//+7rtttskSTfffLOcc/rKV76iq6+++rR9e/fu1ZNPPqn+/n6NjY3plVdekSRdfPHFkqSLLrpIL774on7rt35rzs98/vnnNTAwoL179+rkyZMaHh7Wiy++qAsvvFCZTEYbN25c8euqhQQcAAAAoXv44Yd1++2366677tK9996r5uZmHTx4UL/927+te++9V21tbXrve987Z9/GjRv1wQ9+UDfddJMefPBBnXPOOZKkgwcPauPGjXr66afV09MjSWpoaNDExISk8oI6Gzdu1Ec+8hFt2bJFe/fu1Zlnnqn169frueee06//+q/rhRde8OW1UoICAACA0D388MPaunWrJGnr1q367ne/qx//+MfavHmznnnmGV133XW65ZZb5uz7wz/8Q/X19elDH/qQdu/erfXr10uSvve97+mSSy7R+9//fl100UWSpKuvvlq7du3SJZdcon/8x3/UnXfeqfvuu0+bNm3So48+qrPOOkt/+qd/qhtuuEEf/ehHtXbtWl9eqznnfPmHo6Kzs9MNDg6GHQYAAECk/exnP9P73ve+sMOoixtvvFH33HOPzj33XN9+Rq3zZWaHnHOdix1LCQoAAAASZe/evWGHsCAScACYoVgc18hIr6amjqihoV35fI9yueawwwIAJAgJOABUjI0d0NDQdjlXUqk0oUymSYXCTnV09KmlZXPY4QEAEoJBmACgcs/30NB2TU+Pq1Qqj5AvlSY0PV3eXyyeDDlCAEBSkIADgKSRkV45V6r5nHMljY72BhwRAERbsTiu4eE9KhTu0PDwHhWL42GHFBsk4AAgaWrqyKme79lKpQlNTh4NOCLUC0kCUH9jYwc0MLBOR4/eqpdf/oyOHr1VAwPrNDZ2YEX/7j333KONGzfqkksu0bZt2/TWW2/N2/aZZ57Rl7/85SX/jL/7u7/T2NjYSsJcMRJwAJDU0NCuTKap5nOZTJMaGzcEHBHqwa8kAUgzv0v27r77bh08eFCbNm3S17/+9Xnb/eZv/qZuvvnmJf/7JOAAEBH5fI/Mar8lmmXU2toTcERYKer6AX8EVbL39ttv65133tE111yjSy+9VJ/4xCdOe76/v1/33HOPJOm1117TFVdcoUsuuUS7du2S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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_data():\n",
    "    positive = data2[data2['Accepted'].isin([1])]\n",
    "    negative = data2[data2['Accepted'].isin([0])]\n",
    "\n",
    "    fig, ax = plt.subplots(figsize=(12,8))\n",
    "    ax.scatter(x = positive['Microchip 1'],y = positive['Microchip 2'],c = 'black', s = 50,marker = '+',label = 'Accepted')\n",
    "    ax.scatter(x = negative['Microchip 1'],y = negative['Microchip 2'],c = 'y', s = 50,marker = 'o',label = 'Reject')\n",
    "    ax.legend()\n",
    "    ax.set_xlabel('Microchip 1')\n",
    "    ax.set_ylabel('Microchip 2')\n",
    "#     plt.show()\n",
    "plot_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(z):\n",
    "    return 1 / (1 + np.exp(-z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def feature_mapping(x1, x2, power,as_ndarray = False):\n",
    "    data = {}\n",
    "#     for i in np.arange(power + 1):\n",
    "#         for p in np.arange(i + 1):\n",
    "#             data[\"f{}{}\".format(i - p, p)] = np.power(x1, i-p)* np.power(x2,p)\n",
    "    data = {\"f'{}{}\".format( i-p , p ):np.power(x1,i-p) * np.power(x2,p)\n",
    "                    for i in np.arange(power+1)\n",
    "                    for p in np.arange(i+1)\n",
    "           }\n",
    "    if as_ndarray:\n",
    "        return np.array(pd.DataFrame(data))\n",
    "    else:\n",
    "        return pd.DataFrame(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(118, 28)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>f'00</th>\n",
       "      <th>f'10</th>\n",
       "      <th>f'01</th>\n",
       "      <th>f'20</th>\n",
       "      <th>f'11</th>\n",
       "      <th>f'02</th>\n",
       "      <th>f'30</th>\n",
       "      <th>f'21</th>\n",
       "      <th>f'12</th>\n",
       "      <th>f'03</th>\n",
       "      <th>...</th>\n",
       "      <th>f'23</th>\n",
       "      <th>f'14</th>\n",
       "      <th>f'05</th>\n",
       "      <th>f'60</th>\n",
       "      <th>f'51</th>\n",
       "      <th>f'42</th>\n",
       "      <th>f'33</th>\n",
       "      <th>f'24</th>\n",
       "      <th>f'15</th>\n",
       "      <th>f'06</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.051267</td>\n",
       "      <td>0.69956</td>\n",
       "      <td>0.002628</td>\n",
       "      <td>0.035864</td>\n",
       "      <td>0.489384</td>\n",
       "      <td>0.000135</td>\n",
       "      <td>0.001839</td>\n",
       "      <td>0.025089</td>\n",
       "      <td>0.342354</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000900</td>\n",
       "      <td>0.012278</td>\n",
       "      <td>0.167542</td>\n",
       "      <td>1.815630e-08</td>\n",
       "      <td>2.477505e-07</td>\n",
       "      <td>0.000003</td>\n",
       "      <td>0.000046</td>\n",
       "      <td>0.000629</td>\n",
       "      <td>0.008589</td>\n",
       "      <td>0.117206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.092742</td>\n",
       "      <td>0.68494</td>\n",
       "      <td>0.008601</td>\n",
       "      <td>-0.063523</td>\n",
       "      <td>0.469143</td>\n",
       "      <td>-0.000798</td>\n",
       "      <td>0.005891</td>\n",
       "      <td>-0.043509</td>\n",
       "      <td>0.321335</td>\n",
       "      <td>...</td>\n",
       "      <td>0.002764</td>\n",
       "      <td>-0.020412</td>\n",
       "      <td>0.150752</td>\n",
       "      <td>6.362953e-07</td>\n",
       "      <td>-4.699318e-06</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>-0.000256</td>\n",
       "      <td>0.001893</td>\n",
       "      <td>-0.013981</td>\n",
       "      <td>0.103256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.213710</td>\n",
       "      <td>0.69225</td>\n",
       "      <td>0.045672</td>\n",
       "      <td>-0.147941</td>\n",
       "      <td>0.479210</td>\n",
       "      <td>-0.009761</td>\n",
       "      <td>0.031616</td>\n",
       "      <td>-0.102412</td>\n",
       "      <td>0.331733</td>\n",
       "      <td>...</td>\n",
       "      <td>0.015151</td>\n",
       "      <td>-0.049077</td>\n",
       "      <td>0.158970</td>\n",
       "      <td>9.526844e-05</td>\n",
       "      <td>-3.085938e-04</td>\n",
       "      <td>0.001000</td>\n",
       "      <td>-0.003238</td>\n",
       "      <td>0.010488</td>\n",
       "      <td>-0.033973</td>\n",
       "      <td>0.110047</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.375000</td>\n",
       "      <td>0.50219</td>\n",
       "      <td>0.140625</td>\n",
       "      <td>-0.188321</td>\n",
       "      <td>0.252195</td>\n",
       "      <td>-0.052734</td>\n",
       "      <td>0.070620</td>\n",
       "      <td>-0.094573</td>\n",
       "      <td>0.126650</td>\n",
       "      <td>...</td>\n",
       "      <td>0.017810</td>\n",
       "      <td>-0.023851</td>\n",
       "      <td>0.031940</td>\n",
       "      <td>2.780914e-03</td>\n",
       "      <td>-3.724126e-03</td>\n",
       "      <td>0.004987</td>\n",
       "      <td>-0.006679</td>\n",
       "      <td>0.008944</td>\n",
       "      <td>-0.011978</td>\n",
       "      <td>0.016040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.513250</td>\n",
       "      <td>0.46564</td>\n",
       "      <td>0.263426</td>\n",
       "      <td>-0.238990</td>\n",
       "      <td>0.216821</td>\n",
       "      <td>-0.135203</td>\n",
       "      <td>0.122661</td>\n",
       "      <td>-0.111283</td>\n",
       "      <td>0.100960</td>\n",
       "      <td>...</td>\n",
       "      <td>0.026596</td>\n",
       "      <td>-0.024128</td>\n",
       "      <td>0.021890</td>\n",
       "      <td>1.827990e-02</td>\n",
       "      <td>-1.658422e-02</td>\n",
       "      <td>0.015046</td>\n",
       "      <td>-0.013650</td>\n",
       "      <td>0.012384</td>\n",
       "      <td>-0.011235</td>\n",
       "      <td>0.010193</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   f'00      f'10     f'01      f'20      f'11      f'02      f'30      f'21  \\\n",
       "0   1.0  0.051267  0.69956  0.002628  0.035864  0.489384  0.000135  0.001839   \n",
       "1   1.0 -0.092742  0.68494  0.008601 -0.063523  0.469143 -0.000798  0.005891   \n",
       "2   1.0 -0.213710  0.69225  0.045672 -0.147941  0.479210 -0.009761  0.031616   \n",
       "3   1.0 -0.375000  0.50219  0.140625 -0.188321  0.252195 -0.052734  0.070620   \n",
       "4   1.0 -0.513250  0.46564  0.263426 -0.238990  0.216821 -0.135203  0.122661   \n",
       "\n",
       "       f'12      f'03  ...      f'23      f'14      f'05          f'60  \\\n",
       "0  0.025089  0.342354  ...  0.000900  0.012278  0.167542  1.815630e-08   \n",
       "1 -0.043509  0.321335  ...  0.002764 -0.020412  0.150752  6.362953e-07   \n",
       "2 -0.102412  0.331733  ...  0.015151 -0.049077  0.158970  9.526844e-05   \n",
       "3 -0.094573  0.126650  ...  0.017810 -0.023851  0.031940  2.780914e-03   \n",
       "4 -0.111283  0.100960  ...  0.026596 -0.024128  0.021890  1.827990e-02   \n",
       "\n",
       "           f'51      f'42      f'33      f'24      f'15      f'06  \n",
       "0  2.477505e-07  0.000003  0.000046  0.000629  0.008589  0.117206  \n",
       "1 -4.699318e-06  0.000035 -0.000256  0.001893 -0.013981  0.103256  \n",
       "2 -3.085938e-04  0.001000 -0.003238  0.010488 -0.033973  0.110047  \n",
       "3 -3.724126e-03  0.004987 -0.006679  0.008944 -0.011978  0.016040  \n",
       "4 -1.658422e-02  0.015046 -0.013650  0.012384 -0.011235  0.010193  \n",
       "\n",
       "[5 rows x 28 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x1 = np.array(data2['Microchip 1'])\n",
    "x2 = np.array(data2['Microchip 2'])\n",
    "\n",
    "_data2 = feature_mapping(x1, x2, power = 6)\n",
    "print(_data2.shape)\n",
    "_data2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(118, 28)\n",
      "(118,)\n"
     ]
    }
   ],
   "source": [
    "theta = np.zeros(_data2.shape[1])\n",
    "X = feature_mapping(x1, x2, power = 6,as_ndarray = True)\n",
    "print(X.shape)\n",
    "\n",
    "y = np.array(data2.iloc[:,-1])\n",
    "print(y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6931471805599454"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def regularized_cost(theta, X, y, l=1):\n",
    "    thetaReg = theta[1:]\n",
    "    first = ( -y * np.log(sigmoid(X @ theta) ))  - (1-y) * np.log(1-sigmoid( X @ theta ))\n",
    "    reg = (thetaReg @ thetaReg) * l / ( 2*len(X) )\n",
    "    return np.mean(first) + reg\n",
    "\n",
    "regularized_cost(theta,X,y,l=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def regularized_gradient(theta, X, y, l=1):\n",
    "    thetaReg = theta[1:]\n",
    "    first = ( X.T @ (sigmoid(X @ theta) - y)) / len(X)\n",
    "#     print(first)\n",
    "     # 这里人为插入一维0，使得对theta_0不惩罚，方便计算\n",
    "    reg = np.concatenate([np.array([0]), (l / len(X)) * thetaReg])\n",
    "#     print(reg)\n",
    "# [8.47457627e-03 1.87880932e-02 7.77711864e-05 5.03446395e-02\n",
    "#  1.15013308e-02 3.76648474e-02 1.83559872e-02 7.32393391e-03\n",
    "#  8.19244468e-03 2.34764889e-02 3.93486234e-02 2.23923907e-03\n",
    "#  1.28600503e-02 3.09593720e-03 3.93028171e-02 1.99707467e-02\n",
    "#  4.32983232e-03 3.38643902e-03 5.83822078e-03 4.47629067e-03\n",
    "#  3.10079849e-02 3.10312442e-02 1.09740238e-03 6.31570797e-03\n",
    "#  4.08503006e-04 7.26504316e-03 1.37646175e-03 3.87936363e-02]\n",
    "# [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
    "#  0. 0. 0. 0.]\n",
    "    return first + reg\n",
    "np.array([0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8.47457627e-03, 1.87880932e-02, 7.77711864e-05, 5.03446395e-02,\n",
       "       1.15013308e-02, 3.76648474e-02, 1.83559872e-02, 7.32393391e-03,\n",
       "       8.19244468e-03, 2.34764889e-02, 3.93486234e-02, 2.23923907e-03,\n",
       "       1.28600503e-02, 3.09593720e-03, 3.93028171e-02, 1.99707467e-02,\n",
       "       4.32983232e-03, 3.38643902e-03, 5.83822078e-03, 4.47629067e-03,\n",
       "       3.10079849e-02, 3.10312442e-02, 1.09740238e-03, 6.31570797e-03,\n",
       "       4.08503006e-04, 7.26504316e-03, 1.37646175e-03, 3.87936363e-02])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regularized_gradient(theta,X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "init cost = 0.6931471805599454\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "     fun: 0.5290027310062123\n",
       "     jac: array([-2.94458943e-07, -1.51972320e-06,  2.34238009e-06,  1.85223250e-06,\n",
       "       -2.39375675e-06,  4.28895410e-06, -1.35435949e-06,  1.53200325e-06,\n",
       "       -1.93764599e-07,  7.98286895e-07, -1.50233067e-07, -1.50619590e-06,\n",
       "        4.86214170e-07, -9.80408224e-07,  1.85534606e-06, -1.27800966e-06,\n",
       "        7.29815957e-07, -6.57848811e-07,  3.56959000e-07, -2.89443654e-08,\n",
       "       -2.66044823e-07, -8.48670056e-07, -7.48056830e-07,  1.26070965e-07,\n",
       "       -6.66924636e-07,  2.79434662e-07, -6.00948390e-07,  2.20284467e-07])\n",
       " message: 'Optimization terminated successfully.'\n",
       "    nfev: 55\n",
       "     nit: 19\n",
       "    njev: 55\n",
       "  status: 0\n",
       " success: True\n",
       "       x: array([ 1.2726322 ,  0.62526851,  1.18110054, -2.01977776, -0.91750968,\n",
       "       -1.43140105,  0.12396937, -0.36542089, -0.35720349, -0.17516017,\n",
       "       -1.45817405, -0.05109747, -0.61556197, -0.2747374 , -1.19275643,\n",
       "       -0.24225813, -0.20594332, -0.0447863 , -0.27777193, -0.29534672,\n",
       "       -0.45647333, -1.04328679,  0.02771439, -0.29243876,  0.01551392,\n",
       "       -0.3273817 , -0.14391016, -0.92473298])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import scipy.optimize as opt\n",
    "print('init cost = {}'.format(regularized_cost(theta,X,y)))\n",
    "#init cost = 0.6931471805599454\n",
    "res = opt.minimize(fun=regularized_cost,x0=theta,args=(X,y),method='CG',jac=regularized_gradient)\n",
    "res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "init cost = 0.6931471805599454\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "     fun: 0.5290027297130991\n",
       "     jac: array([-3.43864518e-07, -2.44768778e-09, -9.43718424e-08,  7.79836255e-09,\n",
       "        1.87847362e-08, -1.48243025e-07,  7.23008737e-09, -2.07295216e-08,\n",
       "        1.45885028e-08, -5.96590490e-08,  4.78174025e-08,  7.02570207e-09,\n",
       "        1.74520455e-09,  9.87022512e-09, -3.85778677e-08,  5.16654199e-09,\n",
       "       -8.00106929e-09,  4.79794277e-09, -4.24227921e-09, -2.47789316e-10,\n",
       "       -5.50094539e-08,  6.58565485e-09,  1.99445696e-09,  3.68875163e-09,\n",
       "        4.99319365e-09,  1.05388850e-09,  7.68837046e-09, -2.57083894e-08])\n",
       " message: 'Optimization terminated successfully.'\n",
       "    nfev: 7\n",
       "    nhev: 0\n",
       "     nit: 6\n",
       "    njev: 70\n",
       "  status: 0\n",
       " success: True\n",
       "       x: array([ 1.27273835,  0.62527067,  1.18108852, -2.0199575 , -0.91742314,\n",
       "       -1.43166641,  0.12400638, -0.36553539, -0.35723822, -0.17513013,\n",
       "       -1.45815177, -0.0509885 , -0.61555352, -0.27470598, -1.19281307,\n",
       "       -0.24218856, -0.20600664, -0.04473034, -0.27778426, -0.29537844,\n",
       "       -0.45635885, -1.0432029 ,  0.02777191, -0.29243071,  0.01556724,\n",
       "       -0.32737879, -0.14388658, -0.92465056])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import scipy.optimize as opt\n",
    "print('init cost = {}'.format(regularized_cost(theta,X,y)))\n",
    "#init cost = 0.6931471805599454\n",
    "res = opt.minimize(fun=regularized_cost,x0=theta,args=(X,y),method='Newton-CG',jac=regularized_gradient)\n",
    "res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(theta, X):\n",
    "    probability = sigmoid( X @ theta)\n",
    "    return [1 if x >= 0.5 else 0 for x in probability]  # return a list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.90      0.75      0.82        60\n",
      "           1       0.78      0.91      0.84        58\n",
      "\n",
      "    accuracy                           0.83       118\n",
      "   macro avg       0.84      0.83      0.83       118\n",
      "weighted avg       0.84      0.83      0.83       118\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "\n",
    "final_theta = res.x\n",
    "y_predict = predict(final_theta, X)\n",
    "predict(final_theta, X)\n",
    "print(classification_report(y,y_predict))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.8, 1.2)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuQAAAHfCAYAAAAY8c2WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xtc1FX+P/DXGQblIokoCAKKCWIWagkaSormetvKa2Frmmm69utmpnkpXTczy9pa17a+GZq1j1KyFLM0TRMKJQtNpTR1SA0FBTWUqzLM+f0BQ14GHWRmzmdmXs/HYx7MfOYzc97j6PjmPe9zjpBSgoiIiIiI1NCpDoCIiIiIyJ0xISciIiIiUogJORERERGRQkzIiYiIiIgUYkJORERERKQQE3IiIiIiIoWYkBMRERERKcSEnIiIiIhIISbkREREREQK6VUHYG8tWrSQERERqsMgIiIiIhe3a9eu01LKwPo+zuUT8oiICGRlZakOg4iIiIhcnBDi2I08ji0rREREREQKMSEnIiIiIlKICTkRERERkUIu30NORERERNdXWVmJ48ePo6KiQnUomufl5YWwsDB4enra5PmYkBMRERERjh8/Dj8/P0REREAIoToczZJS4syZMzh+/Djatm1rk+dkywoRERERoaKiAs2bN2cyfh1CCDRv3tym3yQwISciIiIiAGAybiVb/zkxISciIiKiG5KYmIjExETVYTg9JuREREREpAnFxcXw9fVFcXGxXZ4/LS0NR48etfp8R/2ywYSciIiIiDThm2++wcWLF7Ft2za7PH99E3JH4SorRERERGS1S6vG6enpVx1LS0u74ef+6quv8Pjjj+Orr75C//79MW7cOBw7dgyBgYFISUmBEOKqY1JKjB07Fvn5+ejSpQv++9//Yty4cTh//jxOnDiBO++8E4sXL8bYsWORlpaGzz77DLfeeitWrVqFU6dO4eGHH8Yff/yBoUOHYtasWdi9ezceffRRhISE4NSpUzf8WuqDFXIiIiIi0oS0tDTMmTMH3377LZYuXYrOnTsjMzMT9913H/bt21fnsdtuuw3bt29Hfn4+9u3bBwAYPnw4du7ciUOHDmH37t348MMPMX78eCxZsgSrVq0CACxcuBCjRo3Czp07sW7dOpw5cwYvvPACli1bhpUrVzosIWeFnIiI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hYWhR48eWLVqlbIYPOX/FGmHECJTSqm3dT/WkGtYZdmIu2vSpAleffVVvPLKK9i2bRsGDhyoOiQiIrd27do1nD59GmPHjlUah6f8nyK6E5askEeYPn067r77bkydOhXXrl1THQ4RkVvLycmByWTCPffcozoUIk1gQk4eoX79+li4cCFyc3Mxb968Oj0Wp2omIq07fvw4AKBTp06KIyHSBpaskMfo378/RowYgbfeeguPPfYY2rVrZ/NjcKpmIqLfEvK7775bcSRE2sAecvIo8+fPh5eXF6ZNm2bzvpyqmYjcicFggMFgcMhjHz9+HG3atIG/v79DHp+IbsSEnDxKq1at8PrrryMxMRGJiYk27cupmomIKhw9epTlKkROxIScPM7zzz+PiIgITJkyBRcvXrR6P07VTEQE/PLLL/j222/xwAMPqA6FSDNYQ04ex8fHBx9++CG6d++Ol19+GUuWLLFqP07VTESurnqJSlpa2i3rUlNT6/wcR44cwfXr1xEdHV3nxyIi67CHnDxSVFQUpk+fjqVLl1b907oTTtVMdeXIml4iZzl48CCAinaUiJyDPeTksf7617/iiy++wKRJk3DkyBH4+vredvvKqZpvHmVFCB2naiYil1C9B7zyy589esWrO3jwIFq0aIFWrVrZ9XGJqGbsISeP5e/vjw8++AA5OTn4y1/+YtU+gYE9ERNTgPDw99G69SsID38fMTEFHPKQiDQjIyMDUVFREEKoDoVIM9hDTh6tb9++mDBhAt555x2MHDkSDz744B334VTNZAtn1PQSOcvFixdx4sQJjBkzRnUoRJrCHnLyeO+88w6CgoLw5JNPwmg0qg6HiMguUlNT7f6FLzMzE1JKntBJ5GTsISeP16RJEyxcuBDDhw/Hu+++i5dffll1SGRnjqqltYYzanrJOfj5/XZCp16v5/tB5ETsISdNGDZsGB555BG88cYb+P7771WHQ0TkkjIyMtC+fXs0a9ZMdShEmsKEnDRj4cKF8PX1xaRJk2AyWZ6R0x1xqD0ispeDBw9yuEMiBViyQpoREhKCd955B08++SSWLFmCZ555RnVIVAeueDIlf9p3P654HKlSWFiIM2fOICMjAwaDQfPvB5EzsYecNGXChAkYMGAAXnzxReTk5KgOh4jIZezatQsAEBgYqDgSIu0RUkrVMTiUXq+Xhw4dUh0GuZBz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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(-1, 1.5, 50)\n",
    "# print(x)\n",
    "#从-1到1.5等间距取出50个数\n",
    "xx, yy = np.meshgrid(x, x)\n",
    "# print(np.meshgrid(x,x))\n",
    "# print(xx);print(yy)\n",
    "#将x里的数组合成50*50=250个坐标\n",
    "z = np.array(feature_mapping(xx.ravel(), yy.ravel(), 6))\n",
    "z = z @ final_theta\n",
    "z = z.reshape(xx.shape)\n",
    "\n",
    "plot_data()\n",
    "plt.contour(xx, yy, z, 0, colors='black')\n",
    "#等高线是三维图像在二维空间的投影，0表示z的高度为0\n",
    "plt.ylim(-.8, 1.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cost(theta, X, y):\n",
    "    first = (-y) * np.log(sigmoid(X @ theta))\n",
    "    second = (1 - y)*np.log(1 - sigmoid(X @ theta))\n",
    "    return np.mean(first - second)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient(theta, X, y):\n",
    "    return (X.T @ (sigmoid(X @ theta) - y))/len(X)  \n",
    "# the gradient of the cost is a vector of the same length as θ where the jth element (for j = 0, 1, . . . , n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def costReg(theta, X, y, l=1):\n",
    "    # 不惩罚第一项\n",
    "    _theta = theta[1: ]\n",
    "    reg = (l / (2 * len(X))) *(_theta @ _theta)  # _theta@_theta == inner product\n",
    "    return cost(theta, X, y) + reg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6931471805599454"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "costReg(theta, X, y, l=1)  #     0.6931471805599454"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradientReg(theta, X, y, l=1):\n",
    "    reg = (1 / len(X)) * theta\n",
    "    reg[0] = 0  \n",
    "    return gradient(theta, X, y) + reg\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8.47457627e-03, 1.87880932e-02, 7.77711864e-05, 5.03446395e-02,\n",
       "       1.15013308e-02, 3.76648474e-02, 1.83559872e-02, 7.32393391e-03,\n",
       "       8.19244468e-03, 2.34764889e-02, 3.93486234e-02, 2.23923907e-03,\n",
       "       1.28600503e-02, 3.09593720e-03, 3.93028171e-02, 1.99707467e-02,\n",
       "       4.32983232e-03, 3.38643902e-03, 5.83822078e-03, 4.47629067e-03,\n",
       "       3.10079849e-02, 3.10312442e-02, 1.09740238e-03, 6.31570797e-03,\n",
       "       4.08503006e-04, 7.26504316e-03, 1.37646175e-03, 3.87936363e-02])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gradientReg(theta, X, y, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(array([ 1.27271027,  0.62529965,  1.18111686, -2.019874  , -0.91743189,\n",
      "       -1.43166929,  0.12393227, -0.36553118, -0.35725404, -0.17516293,\n",
      "       -1.4581701 , -0.05098418, -0.61558556, -0.27469165, -1.19271299,\n",
      "       -0.24217841, -0.206033  , -0.04466178, -0.27778949, -0.29539514,\n",
      "       -0.45645981, -1.04319154,  0.02779373, -0.29244867,  0.0155576 ,\n",
      "       -0.32742405, -0.1438915 , -0.92467487]), 32, 1)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(array([ 1.02253248,  0.56283944,  1.13465456, -1.78529748, -0.66539168,\n",
       "        -1.01863181,  0.13957059, -0.29358911, -0.30102279, -0.08324364,\n",
       "        -1.27205982, -0.06137378, -0.53996494, -0.17881797, -0.94198718,\n",
       "        -0.14054843, -0.17736656, -0.07697368, -0.22918936, -0.21349659,\n",
       "        -0.37205336, -0.86417647,  0.00890082, -0.26795949, -0.0036225 ,\n",
       "        -0.28315229, -0.07321593, -0.75992548]),\n",
       " 57,\n",
       " 1)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result2 = opt.fmin_tnc(func=costReg, x0=theta, fprime=gradientReg, args=(X, y))\n",
    "print(result2)\n",
    "result2 = opt.fmin_tnc(func=costReg, x0=theta, fprime=gradientReg, args=(X, y, 2))\n",
    "result2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "                   intercept_scaling=1, l1_ratio=None, max_iter=100,\n",
       "                   multi_class='auto', n_jobs=None, penalty='l2',\n",
       "                   random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n",
       "                   warm_start=False)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import linear_model#调用sklearn的线性回归包\n",
    "model = linear_model.LogisticRegression(penalty='l2', C=1.0)\n",
    "model.fit(X, y.ravel())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8305084745762712"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.score(X, y)  # 0.8305084745762712"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8050847457627118"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_theta = result2[0]\n",
    "predictions = predict(final_theta, X)\n",
    "correct = [1 if a==b else 0 for (a, b) in zip(predictions, y)]\n",
    "accuracy = sum(correct) / len(correct)\n",
    "accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.85      0.75      0.80        60\n",
      "           1       0.77      0.86      0.81        58\n",
      "\n",
      "    accuracy                           0.81       118\n",
      "   macro avg       0.81      0.81      0.80       118\n",
      "weighted avg       0.81      0.81      0.80       118\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'\\n                 precision    recall  f1-score   support\\n\\n              0       0.87      0.75      0.80        60\\n              1       0.77      0.88      0.82        58\\n    \\n    avg / total       0.82      0.81      0.81       118\\n '"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(classification_report(y, predictions))\n",
    "\n",
    "'''\n",
    "                 precision    recall  f1-score   support\n",
    "\n",
    "              0       0.87      0.75      0.80        60\n",
    "              1       0.77      0.88      0.82        58\n",
    "    \n",
    "    avg / total       0.82      0.81      0.81       118\n",
    " '''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.8, 1.2)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuQAAAHfCAYAAAAY8c2WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl81OW5///XPTNZJgskhARCIARCCFvAJWyKGlGp4lq1xlarVlrb0/acWr/2q93OaXtq7Wn7O62n7ff0WLW2ntbS1larxaUKQcGIAiJB1oQ9AbJAyL5M5v79kYSyJBDCzHwmM+/n45FHJp/5zOe+woTJlWuu+76NtRYREREREXGGy+kARERERESimRJyEREREREHKSEXEREREXGQEnIREREREQcpIRcRERERcZASchERERERBykhFxERERFxkBJyEREREREHKSEXEREREXGQx+kAgm3kyJE2JyfH6TBEREREJMKtW7eu1lqbfraPi/iEPCcnh7Vr1zodhoiIiIhEOGPMnsE8Ti0rIiIiIiIOUkIuIiIiIuIgJeQiIiIiIg6K+B5yERERETmzzs5O9u/fT1tbm9OhhL34+HjGjh1LTExMQK6nhFxERERE2L9/P8nJyeTk5GCMcTqcsGWtpa6ujv379zNhwoSAXFMtKyIiIiJCW1sbaWlpSsbPwBhDWlpaQN9JUEIuIiIiIgBKxgco0P9OSshFREREZFCKioooKipyOowhTwm5iIiIiISFxsZGEhMTaWxsDMr1S0pK2L1794DPD9UfG0rIRURERCQsLF++nI6ODlasWBGU659tQh4qWmVFRERERAbs+KrxypUrTzlWUlIy6Gu/8sorfOELX+CVV15h0aJF3HPPPezZs4f09HSWLl2KMeaUY9Za7rrrLg4cOMB5553Hz3/+c+655x4aGhqorKxk3rx5PPbYY9x1112UlJTw3HPPMX36dH7/+99z6NAh7r77bo4cOcJNN93EV7/6VdavX8+nP/1pMjMzOXTo0KC/l7OhCrmIiIiIhIWSkhK++c1v8uabb/L4448za9YsSktLueGGG9i4cWO/x2bMmMHq1as5cOAAGzduBODmm29mzZo1bN++nfXr1/Ob3/yGe++9l5/+9Kf8/ve/B+DRRx/l9ttvZ82aNbzwwgvU1dXxjW98gyeffJJnn302ZAm5KuQiIiIiMmDHV8B7K+PnUhXvtX37dg4ePMgtt9xCZWUlL7/8Mg8++CAA9957L9Zafv3rX3PLLbeccOzpp5/m7bffpqSkhPr6eiorKwGYPXs2AOeddx67du3iggsuOGXMbdu2UVpaytNPP01TUxNVVVXs2rWLWbNm4XK5yM/PP+fvayCUkIuIiIiI41599VW+8pWv8LWvfY1HHnmE5ORk1qxZwxVXXMEjjzxCZmYmU6ZMOeVYfn4+c+bM4VOf+hQvvPAC48aNA2DNmjXk5+ezfv16iouLAfB6vTQ3NwPdG/zk5+dz4403cvnll/P000+TmppKdnY2mzZtYuLEiWzfvj0k37taVkRkyPD5GqmqeoKKioeoqnoCny84s/BFRCT0Xn31VRYuXAjAwoUL+etf/8qGDRtYsGAB77//PnfeeSf33XffKcc+85nPsGzZMi666CIef/xxsrOzAfjb3/7G3LlzmTZtGueddx4At9xyC48++ihz585l586dPPzww/zwhz9k3rx5vP7664wePZrvfOc73H333Xz0ox8lLS0tJN+7sdaGZCCnFBYW2rVr1zodhoico/r6VZSVLcZaP35/My5XIsa4KChYRkrKAqfDExEZ8rZs2cLUqVOdDiMg7rnnHr71rW+Rk5MTtDH6+vcyxqyz1hae7bVUIReRsOfzNVJWtpiurkb8/u63Gv3+Zrq6uo/7fE0ORygiIuHk6aefDmoyHmhKyEUk7FVXL8Vaf5/3WeunpmZpiCMSEREJHE3qFJGw19q641hl/GR+fzMtLeUhjkh8vkaqq5fS2roDrzePjIxiPJ5kp8MSERmSlJCLSNjzevNwuRL7TMpdrkQSEiY5EFX06qufv6LiAfXzi4gMklpWRCTsZWQUY0zfL1fGuEhPLw5xRNFL/fwi0ksrXwWOEnIRCXseTzIFBctwu5NxuRKB7sq429193ONJcjjC6KF+fhGB7nfKSkuzKC+/n337fkB5+f2UlmZRX7/qnK77rW99i/z8fObOncuiRYtoaGjo99z333+fp5566qzHeP7556mvrz+XMANOCbmIDAkpKQuYP7+KvLzHGDfuYfLyHmP+/Cq1SISY+vlFJNjvlH3zm99kzZo1zJs3j9/97nf9nnf++edz7733nvX1lZCLiJwDjyeJzMwl5OY+SmbmElXGHdDbz98X9fOLRIdQvVPW1tZGR0cHt956KxdffDFf+MIXTri/pKSEb33rWwAcOnSIq6++mrlz5/Loo48CUFFRweWXX05hYSFf+9rXAFi0aBEvv/wyH/vYx/jyl78ckDgDQQm5iIgMmPr5RSTY75Q98sgj5OfnU1FRQXNzMzNmzGD16tUcOHCAjRs39vmYRx99lNtvv501a9bwwgsvUFdXx1e+8hW+973vsXbtWlpbW2lqauK1117jmmuu4Y9//CM//vGPzynOQNIqKyIiMmC9/fz97Zqqdy1EIl+wV776+te/jsfjobS0lL179/L2229TUlJCfX09lZWVzJw585THbNu2jdLSUp5++mmampqoqqpi69atzJ49G4Af/vCHuN3uc4ormFQhFxGRs6J+fpHoFop3ym699VZef/118vPzuf/++ykpKeHb3/4248aN6/P8/Px8vv/971NSUsKDDz5IamoqU6ZM4d133wXg6quvpry8u3Lv9Xppbu67wu8UVchFROSs9fbzi0j0CcU7ZR6PhyVLlnD06FFWr17NL3/5S1JTU3n22WePndPS0kJsbCwADz/8MPfeey9f/epXmTRpEnfeeSc/+MEP+PSnP01bWxsf+chHyMvLA+Cuu+5iyZIldHV18eabb+L1es853nNlrLVOxxBUhYWFdu3atU6HISIiIhLWtmzZwtSpUwd8vs/XRE3NUlpayklImER6enFI2tZ2797N7bffjjGGJ598kmnTpgV9zL709e9ljFlnrS0822upQi4iIiIiZ82pd8pycnJ45513Qj5uMKmHXEREREQAiPTOiUAJ9L+TEnIRERERIT4+nrq6OiXlZ2Ctpa6ujvj4+IBdUy0rIiIiIsLYsWPZv38/NTU1TocS9uLj4xk7dmzArqeEXERERESIiYlhwoQJTocRldSyIiIiIiLiICXkIiIiIiIOUkIuIiIiIuIgJeQiIiIiIg7SpE6Jaj5fI9XVS2lt3YHXm0dGRjEeT7LTYUmI6PkXEZFw4GhCboyJAf5srb2+n/vjgT8B44CNwF1A3MnHrBbMlEGor19FWdlirPXj9zfjciVSUfEABQXLSElZ4HR4US0UibKefxERCReOtawYY7zAOuCq05x2J7DfWjsLSO05t69jImfF52ukrGwxXV2N+P3NAPj9zXR1dR/3+ZocjjB61devorQ0i/Ly+9m37weUl99PaWkW9fWrAjaGnn8REQknjiXk1tpWa+1MYP9pTlsI/L3n9nLg8n6OncAYc58xZq0xZq0Wt5e+VFcvxVp/n/dZ66emZmmIIxIIXaKs519ERMJJuE/qTAOO9txuAEb0c+wE1trHrbWF1trC9PT0kAQqQ0tr645jCd/J/P5mWlrKQxyRQOgSZT3/IiISTsI9Ia8FhvfcHt7zdV/HRM6K15uHy5XY530uVyIJCZNCHJFA6BJlPf8iIhJOwj0hfwNY1HN7IbCin2MiZyUjoxhj+v7xN8ZFenpxiCMSCF2irOdfRETCSdgk5MaYCcaYH510+LdAljFmI3CY7mS8r2MiZ8XjSaagYBlud/KxBNDlSsTt7j7u8SQ5HGF0ClWirOdfRETCiYn0FQMLCwvt2rVrnQ5DwpTP10RNzVJaWspJSJhEenpxRCdjRUVFAJSUlDgax+n0tRyhMa6gLEcYbc+/iIgElzFmnbW28Gwfp42BJKp5PElkZi5xOgw5TkrKAubPrwpJoqznX0REwoESchEJO0qURUQkmighF4lwvW0qACtXrjzlWDi3r4iIiESDsJnUKSIiIiISjVQhF4lwx1fAh8KkThERkWijhFxEJAL4fI1UVy+ltXUHXm8eGRnFeDzJToclIiIDoIRcRGSI62upyIqKB4KyVKSIiASeEnKRKKJWlcjj8zVSVraYrq7GY8f8/mYAysoWM39+ldZWFxEJc0rIRUJIbQWRx+nntLp6Kdb6+7zPWj81NUu1hKSISJhTQi4SImoriDzh8Jy2tu44VhE/md/fTEtLeUjiEBGRwdOyhyIhcHxbQW/y5Pc309XVfdzna3I4Qjlb4fKcer15uFyJfd7nciWSkDApJHGIiMjgKSGXqODzNVJV9QQVFQ9RVfUEPl/jmR8UQANpK5ChJVye04yMYozp+6XcGBfp6cUhiUNERAZPLSsS8dRWIMEQLs+px5NMQcGyU37GjXFRULBMEzpFRIYAJeQS0cJlBYretoK+Eji1FQxN4fScpqQsYP78KmpqltLSUk5CwiTS04uVjIuIDBFqWZGIprYCCZZwe049niQyM5eQm/somZlLlIxHKKfb70QkOFQhl4imtgIJFj2nEmrh0H4nIsGhhFwimtoKJJj0nEqohEv7nYgEhxJyiWgZGcVUVDzQ531OthUMZX5raWxvp76tjaPt3R+N7e3dHx0dNHV00NzZQUtnJy2dnbR2dtLq66TN56PN56O9q4uOri46unx0dvnx+bvo9Pvp8vvpshZ/z4e19oRxjTG4jMGFweUyeIwLt8uFx+Ui1u0ixuUm1t39Ee/xENfz4fXE4PV48MbEkBgTQ0JMLAkxMSTFxvZ8xJEcF8uw2HiGxcUxLC6OeI8HY8yA/j0i4TmV8KcNoEQimxJyiWhqKxgYay2NHe0caGqiuqmJQ81NHGpupral96OFupYWDre2Ut/ehv+kZPlkXo+HhJhYEmNi8MbE4PXEEO/xMMKbQJzHTZzbQ6zbTYzLRYzb3Z1YG4PL5cJjXBgDBkNvTmwtWP6RrPutxdeTxHf6/XT6u+js8h9L9Nt9XbR1+WhsaaGts5NWn4/Wzk5aev4wOJNYl5vh8fGkxseT6vWSEu9lhNdLmjeBtAQvI72JpCUkkJ6QQHpiIsmxcQNO4EUGI1za70QkOJSQS8RTW0F3wl3f1saeo/XsazjKvqNHqWxsoLKhgarGBg40NdLc2XnK45Jj40hPTCDNm0Be2khSvV5GxHtJiY8nJT6e4XHxDIuPIzk2juS47s+JMTG4XeE7X7zL76e5s5OmjnaaO7o/N3Z00NjeTkNHO/VtrRxtb+doWxv1bW0caW2l4nAda9taOdLW9x8jcW4PGYmJPR9JjEpKYnRiEqOTkhidlExmUjKjkpKIdbsd+I4lEoRT+52IBJ45+W3hSFNYWGjXrl3rdBgiIdHR1cXu+iOUH66j/PBhKo4cZlf9EfbU19PY0X7CuSPivYwZNowxycmMSR7GmJ6kcVRPIpmekIg3Jsah7yQ8dfn91Le1UdfaQm1LC7UtzVQ3N1PT87m6uZlDzY0camo65Q8cA2QkJjEmOZms5GGMHTac7OHDGTd8ONnDUshMTsYTxn/IiLN8vkZKS7NO6CHv5XYnq4dcJEwYY9ZZawvP9nGqkIsMQdZaDjY1sbm2mq21NWyrrWV7XS0764/g83f3mRpgTPIwJqSkcv6UqWQPT2H88OGMG57C2ORhJMbGOvtNDEFul4u0hATSEhKYnHb6cxvb2znU3MSBxkaqmhp7PjdQ2dBIWfUhXqnYcey5AvC4XGQlDyMnJYWclFRyUlKYkDKCCSmpjElODut3HST41H4nEtlUIRcZAg41NbHh0AE+OHiQTdWH2FxTzeG21mP3jxs2nMlpaeSnpZOXlkbeiDQmpKSqwh3Guvx+DjY1sa/hKHuO1rO352NPfT276+tp6uw4dm6sy01OSgoTU0eQO2IEk0Z0P8e5qSOI86iuEk18vqaobr8TCXeDrZArIRcJM11+P1tqa1h3oJJ1VVWsO1DFgabut6k9Lhf5aSOZnp7BtJ6P/LSRJMfFORy1BJK1ltrWFnbXH2HXkSPsrD/CriPdLUh76uvp6nnddhlDTkoK+Wnp5KeNZMrIkeSnpTNu+HBcmmQqIhJyalkRGaJ8fj+bqg9Run8va/bvZ/2BqmPV0cykJC7IHMP5oy/kvNGZTE/PUEU0ChhjSE9IJD0hkdljxp5wX0dXF7vqj7CjrpbtdXVsP1zL5ppqXinfTm95JTEmhikj05k6Mp1p6RlMzxjF5BFp+tkREQlTqpCLOKCyoYE39+7mzT27eXvf3mMTLvNGpDE7ayyzx2RROCaLrORhDkcqQ0VLZyc76mrZUlvD1toatvR8NHV0/3EX43KRPzKdgoxRzBw1mlmjRpM3Ik296SIiAaSWlX4oIZdw4PP7WVdVyfLdOynZvYsdh+sAyExK5tLxOVw8Lpt5Y7MZmZDgcKQSSfzWsu/oUT6sOcTG6kOUHTpEWfXBY0l6QkwMBRmjmDU6k/N7PjIS1Y8sIjJYSsj7oYRcnNLR1cWqvXt4uXw7y3dVcKStjRiXizlZYynKmchl43PITR2hDWUkpPzWsrv+CBsPHeSDQwfZcPAAm2uq6exZ8WXcsOFcmDmG2VljKczMYtII/YyKiAyUEvJ+KCGXUOrs6uLtfXt5acc2Xqsop7GjneTYOBZOmMhVEydx6fgckrTcoISZdp+PzTXVrDvQPYl4bVUlda0tQPd69YVjspiTNZa5WWOZMjJdbS4iIv3QpE4RB31YfYjntnzIX7dt5XBbK8mxcSzKncQ1kyZz8bhsTaaTsBbn8XB+5hjOzxzDp+le5WX30Xreq9zPe1WVvFe5n9d2dm/NPiwujnlZ47hoXDYXj8tmYgjf5fH5GqmuXkpr6w683jwyMorxeJJDMraISDCpQi4ySEfb2nhh2xaWfljGltoaYl1urpyYy01TpnJJdo6ScIcVFRUBUFJS4mgckeJAYyNrKvfzzv69rN63l8rGBqB7JaCLs8dzSXb3XIgR3uDMg6ivX9XvpjgpKQuCMqaIyNlShVwkRDYeOshvPnifl3Zso6OrixkZo/h20RVcPzmflHiv0+GJBEVmcjI3TZnKTVOmYq1l79GjrN63h9X79vL3igr+tPlDDDAjYxRFORNYmDORglGjA7Ieus/XSFnZ4hO2jff7mwEoK1usbeNFZMhTQi4yAD6/n1fKt/P0hvWsP3iAxJgYbps2g+LpBUzPGOV0eCIhZYxhfEoK41NS+ETBLLp61tLvXcrz5++t4afvvkOaN4GinAlcMSGXS7LHkzjI+RPV1Uux1t/nfdb6qalZSmbmknP5lkREHKWEXOQ0mjs6eHbTRp7+YD1VjY2MH57Cv156ObdMna7dMQcg1G0jveMBrFy58pRjal8JDrfLxazRmcwanck/z5nPkdZW3ty7m+W7dvL3neU8t+VDYl1u5o/LZlHuJK6cmEt6QuKAr9/auuNYRfxkfn8zLS3lgfpWREQcoYRcpA8N7e08s/F9nnp/HUfa2pgzZizfumwhCyfkaktykTNI9Xq5MX8qN+ZPpbOri3UHqnhjVwWv76zg68v/zjeW/53ZY8Zy9aQ8rp6Ux+ik00/M9HrzcLkS+0zKXa5EEhImBetbEREJCU3qFDlOU0cHv9qwjiffX0dDeztFORP44ux5XJA5xunQhiQnJ1ZqUmf4sdayta6WV8t38ErFDrbX1QJwYeYYFuflc11ePumJp1bOfb5GSkuzTugh7+V2J6uHXETChtYh74cSchmIjq4unt30AT979x3qWlu5amIuX5wznwL1h5+1vtpGLrvssmPHQt2+ooQ8fO08cphlO7azrHw7W2trcBnDRWOzuSF/Ch/JzTuhLUyrrIjIUKBVVkQGwVrLy+U7+OHbb7HnaD3zx2bzfy++hFmjRjsdmkjEm5g6gi/OmccX58yj4nAdf92+lb9u28r/ff1V/rXkDa6ckMtNU6Zx6fgcUlIWMH9+FTU1S2lpKSchYRLp6cWqjItIRFCFXKLW9rpa/q3kDdZU7mdy2kgevvhSLhufM6S3CQ+3qnC4xRMunN7gxunxT8day4aDB3h+2xZe2r6VI21tpCck8tGp07ht2gwmpo5wOkQRkX6pQi4yQM0dHTy25m1+tWE9yXFxfPfyKymeXqDtwCUk+mq9qKh4IGStF06PfybGmGO7hn79kiJKdu/kT5s/5Mn1a3l83XvMHpNF8fQCFudNJt4T43S4IiIBoYRcosrK3bv42vK/c6CpkeLpBXzlogVB21lQ5GROb3Dj9PhnK9btZlFuHoty86hpbua5LR/yh82bePDvr/CdN1dw69QZ3DFzFhNSUp0OVUTknCghl6jQ0N7Gv79ZwnNbPmRS6gj++LHbuTAzy+mwAiKc195Wq8qJnN7gxunxz0V6YiKfK5zDZy+czZrK/fyu7IPupUk3rOOS7PHcNfN8inIm6J0uERmSlJBLxCvdt5cH//4y1c3NfL5wLv88Zx5xHv3oS+g5vcGN0+MHgjGGeWPHMW/sOGqam/n9hxv5XdlGPvPS82QPG849513ArdNmkDTIXUFFRJygrEQiVmdXFz9Z8za/WPsuOSmp/Om2T0Tk6inHV6E1iTK8Ob3BjdPjB1p6YiL/PGc+n7twDq9VlPP0B+v5zpsr+PE7b/OJgpncPev8M246NBDhPAlWRCKDVlmRiHSgsZF/eeUl1h2o4rZpM/jXyxaSEBP5E8CUkIc3pze4cXr8UNhw8ABPvr+Wl8t34DaGG/Kn8k+Fcwa9OovWPxeRszHYVVbUbCcRZ83+fdzw+2fYWlvDTz6ymO9f+ZGoSMYl/Hk8yRQULMPtTsbl6t6R0uVKxO3uPh7sZNjp8UPhvNGZ/PSa61lx1xI+UTCLv+3YxlXP/IovLnuRLTXVZ3Wt4yfB9r6r4Pc309XVfdznawrGtyAiUciRCrkxJh74EzAO2AjcZU8KxBhTBHy358vxwDeAQ8ATwO6e40ustdtON5Yq5NHDWsszGzfw72+uICcllV9cewO5I9KcDkvkFD5fk6Mb3Dg9fijVtrTwqw3reOaDDTR1dnDlhFz+Ze58ZgxgF96qqicoL7+/3xafvLzHwnYSrIg4Y7AVcqcS8k8DhdbazxljXgL+y1r72mnO/xvwVWAMcKG19pGBjqWEPDr4/H7+/c0VPLNxA1dMmMh/Llp8wrbbIhLdjra18esP3udXG9ZztL2Nj+Tm8eV5FzE5bWS/j6moeIh9+37Q7/3jxj1Mbu6jwQhXRIaoodayshD4e8/t5cDl/Z1ojEkAJllrN/YcusUY864x5jkzlLdUlIBp6ezkn/72As9s3MBnLijkf667Scm4iJxgeHw8/zJ3Pivv+TRfmjuf1Xv3cM1vf80Dry5j79H6Ph/TOwm2L0NxEqyIhC+nEvI04GjP7QbgdLNtrgLe6LldAXzTWjsHyAQu6+sBxpj7jDFrjTFra2pqAhSyhKOjbW3c9Zc/smL3Lr5ddAVfXXAZLv2dJiL9GBYXx5fmXsTKez7NZy6czSsVO7jqmV/xnTdXcKS19YRzMzKKMabvX5PGuEhPLw5anD5fI1VVT1BR8RBVVU/g8506EVdEIodTLSu/Bf5srX3OGPN/gBHW2q/3c+4TPecuM8akAU3W2nZjzO+A5621fzjdWGpZiVw1Lc3c/fxz7Dx8mJ9cfS1XT8pzOiQRGWIONTXx2Jq3+cPmTSTGxPLFOXO5a+b5x/YqcGKVFa3sIjJ0DbUe8nuBudbaz/b0h//YWvt6H+cZoByYbq1tM8Y8AmwHngE2ALdbazefbiwl5JGppqWZO577A5WNDfziuhu5JDvH6ZBEZAjbVlfL91e9yco9u8geNpxvXFrEFRNyMcaEdBJsNCxNKRLJhloP+W+BLGPMRuAwUGGM+VEf580GPrTWtvV8/TPgU8Aa4C9nSsYlMtW1tHDnn/9IZWMDT91ws5JxETln+Wkj+dWNN/Prm24h1u3mvpde4N6//pmdRw7j8SSRmbmE3NxHycxcEtSEuLp6Kdb6+7zPWj81NUuDNraIOEcbA8mQ0tDezieeW8rO+iM8ef1HmT8u2+mQRCTCdHZ18ZuNG3hszdu0+3x89sI5fH72HOI9wd/PQCu7iAxtg62Qe4IRjEgwtPt8fO6lF9h+uI5fXncTszNTqap6Iiy3s9ZW2yJDV4zbzZLzL+SGyVP43qqV/Oy9d3hx+1a+u/BKLh43Pqhj967s0t/a51rZRSQyqUIuQ4LfWv7l5ZdYVr6d/1y0mKLRdWE76UkTskQiy6q9e/jmitfZc7SeW6ZO5xuXFDE8Pj4oY6mHXGRoG2o95CJn5SfvvM2y8u18bcFlXDdpbNhuZ62ttqGoqIiioiKnwwiZaPt+o9GC7PG8fMddfL5wLs9v3cyi/32a13eWB2UsjyeZgoJluN3Jx9ZAd7kScbu7jysZF4lMSsgl7L24fSs/e+8dbps2gyXnXxjWk57CObZzoaRTBitSfnbiPTE8eNECni++g7SEBO576QX+z2sv09DeduYHn6WUlAXMn19FXt5jjBv3MHl5jzF/fpXeYROJYOohl7C2tbaGh15/lcIxWXzn8isxxtDauqPP/krorka3tASncjUQ4RybiJy76RmjeL74Dn7+3jv8v/fWsKZyH/+5aDFzssYGdJzelV1EJDooIZd+OT0xsbG9nc8ve5FhcXH8/JrriXW7gfCe9BTOsQXT8RXQlStXnnKspKQkINc/1+sESrC/XwlvsW43X553MQsn5PLlV5fx8eeW8tkL5/DleRcR0/M6JSJyNpSQS5/6mphYUfFASCcm/lvJG+w9Ws/vbr6N9MTEY8czMoqpqHigz8cEezvrMwnn2M6Wkk4ZrGj52Zk1ajQv3n4n332rhF+se5c1lfv4r6uvI2vYMKdDE5EhRgm5nOL4iYm9eiu+ZWWLQzLL/4VtW3h+2xa+NHf+KW8F90566m8lEycnPYVzbMF0fIIVbtXsYIi271f6lxgby6PerNU9AAAgAElEQVRXLOKS7PE8/MZrXPfsM/zwqo9w5cTIfDdMRIJDCbmcYiATE4PZ23igsZF/XfEGF2aO4Quz5/V5Tu+kp1BtZ302wjm2s+F00hktVdZI5PTPzslCEcPivHymp4/in19+kfteeoHPXTiH/zP/YtwurZ0gImemhFxO4eTERGst31jxOj5/Fz+66ho8p/llFs6TnsI5NhEJjvEpKfzxYx/nO2+u4Bfr3mVT9SF+cvViRngTnA5NRMKcEnI5hZMTE1/cvpUVu3fyjUuKGJ+SErRxJHgCVYUMtyprf8IxJnFOnMfDIwuvYuao0fzbije4aelv+eX1HyU/baTToYUVpxcNEAk32qlTTuHUTnEN7e1c+cxTZCYl8+fbPqG3euWYcE7IJTz11fJ02WWXHTsWip+lDw4e4LN/e4GWjk5+cvW1LJwwMehjDgXazVgimXbqlIBxaqe4H7+zmsOtrXx34VVKxkVkyJs1OpO/3HYHOSkpfObFv/CrDeudDslx2s1YpG9qWZE+hXpiYvnhOv534wY+PmMmBRmjgjKGhEYwqtmqjMvZCpeWp8zkZH5/6+088Noy/v3NFVQ1NvDVBZfhMibksYQDpxcNEAlXSsilX6GcmPgfq9/EGxPD/XMvCsl4IiKhkhATw8+vuZ7vvlXCk++v42BTIz+66hriPMH5FRzO/dnazVikb0rIxXHrDlTyxq6dfOWiBaQlaDUCEYk8bpeLf730csYkJ/Poqjc52tbOL667kYSYmICOEw6bup1OtO5mLHImmtQpjrLWcsef/0j5kTpK7v50wH85nQ1NHBy8cJhAJzJU/HHzJr76xmucN2o0T95wM8Pj4wNyXacm5J+NoRCjyLnQpE4ZktZU7uedyn18vnCuo8m4iEiofGzaDH6++Ho2VVdzx5//wJHW1oBcdyD92U5zatEAkXCnlhVx1M/fe4f0hERun1HgdChyDsJlAp3IUPGR3Dz+57ob+ezfXuCOv/yRZ2669Zxb9oZKf3ak7GYsEkhKyMUxm6oPsXrfXh66+BLiPc5Ux7U9u8i5C+dJhOHsspwJ/PL6m7jvxRf45PN/4rcf/RipXu+grzeU+rO1m7HIidSyIo556v11JMbE8PEZs5wORUQGqb5+FaWlWZSX38++fT+gvPx+SkuzqK9f5XRoQ8Il2Tk8ft2N7DxymLuf/xMN7W2DvlZGRjHG9P1r3RgX6enFg762iASXJnWKI2qam1nwq8f5RMEs/u2yhU6HA6jVQuRsaYJe4CzftZN/+tsLzBw1mt/cdCveQc6p0S6YIs7SpE4ZUv6weROdfj+fnHme06GIyCANhUmEQ8XCCRP58UcWs/5AFZ9f9lc6uroGdZ3e/uy8vMcYN+5h8vIeY/78KiXjImFOPeQScl1+P7/ftJH5Y7OZmDrC6XBEZJCGyiTCoWJxXj4N7e18bfnf+eobr/Gjq67GDGJHT/Vniww9Ssgl5N7ev5fKxgYeuvgSIHxaRZweX2SoGUqTCIcCn6+RS0e8yz2Tm3h662YyE+N48OLwaOkTkeBSQi4h9/zWLSTHxnHVRP2yFhnKMjKKqah4oM/7NInw7Bzf+31JXDM7R3yc/7cO0mLr+dTsm50OT0SCTD3kElJtvk5eq9jBNZPyiPPo70GRoUybvASGz9dIWdliuroa8fubMQY+mbWUGUlb+V5pOav3bHc6RBEJMq2yIiH1cvl2vrDsRTLeKiW+phbQVusiQ53P19TvJi/h0pIWzqqqnqC8/P5TWn9auuJ5pPxLtNgMXvj4vWQPT3EoQhEZKK2yIkPCK+U7GBHvJa62zulQRCRAeicR5uY+SmbmElXGz1J/k2MT3G38S86TdPm7+OxLL9DS2elAdCISCuoZkJDp6Opixe6dXDNpMv+xYsWx46qgifRN/zeiw+kmx2Z6W/n2/GQefKuWh19/lceuvnZQK6+ISHhTQi4h817Vfpo6OrhqYq7ToYhIEPX+IQH/aEk7/pj+wDjRmSbHXl9wJwd8H/Kj0lUUjsnirlnnhzhCEQk2taxIyJTs3kWsy81F48Y7HYqISNgYyOTYzxXOoShnAt97ayVl1YccjlhEAk2TOiVkrv7fp0lPTOSZj37M6VBEwlZf1eWhPOFZbTcDd7rJsQBHWlu57tlniHG5ePHjnyQ5Ls7BaEWkL5rUKWGtprmZ7YfrWJCt6riISF/ONDk21evlsauvpbKxgW+tXO5QlCISDOohl5BYU7kPgHljsx2ORIaiaKqyHv89RtP3LQNTOCaLL86Zx2NrSrk8ZwLXTZ7idEgiEgBKyCUk3quqJCEmhunpGU6HImFAiWb00HMceF+YPY+Vu3fzzRVvUDgmi9FJyU6HJCLnSC0rEhLrD1Qxa1QmHpd+5EREzoXH5eJHi66mvcvHV994jUifCyYSDVQhF3y+Rqqrl9LaugOvN4+MjGI8nsBVXFo7O9laW8NnL5wTsGtK5NPSeWf+HvVOQ/SamDqChy6+hG+vXMHzW7fw0anTnA5JRM6BEvIoV1+/irKyxVjrx+9vxuVKpKLiAQoKlpGSsiAgY2yurabLWmaOGhWQ68nQpARbJLA+OfN8Xtq+jX9/awULxo8nPSHR6ZBEZJCUkEcxn6+RsrLFdHU1HjvWu1NcWdli5s+vCsgW2B9WVwMwI0MJuQycJjeKnJ7LGL5/xSKu/d0zPPJWCT/5yLVOhyQig6SEPIpVVy/FWn+f91nrp6ZmKZmZS855nC21NaTGx5OpiUdRTQl2YATqnQY9B5Ehd0Qany2czU/ffYdbpkznkvE5TockIoOgGXZRrLV1x7GK+Mn8/mZaWsoDMs622lqmjEzHGBOQ64mIyD98vnAuOSmp/NvK5XR0dTkdjogMgirkUczrzcPlSuwzKXe5EklImHTOY1hrKT9Sx81TNOFIBk9V3H/QOw1ysjiPh3+79HI+9dc/86sN6zSBXmQIUkIexTIyiqmoeKDP+4xxkZ5efM5jVDc309TRwcTUEed8LYkcSiCdoYm1keuynAlcMWEiP3v3HW6eMp30RE3wFBlK1LISxTyeZAoKluF2J+Nydb94u1yJuN3dxwMxoXNX/REAJqSmnvO1RESkf1+7pIiOri7+v9JVTociImdJFfIol5KygPnzq6ipWUpLSzkJCZNITy8OSDIOsKcnIc8ZroT8ZGo3kHN1tj87aneJbBNSUrlr1vk89f467p51PlODuDNysPevEIk2jiTkxph44E/AOGAjcJc9aasxY8zVwBPA7p5DS4A9Z3qcnD2PJykgq6n0ZX9jA25jyEw+8wu1XuBFRM7NF2fP40+bP+SHpat46oabgzJGKPavEIk2TrWs3Anst9bOAlKBq/o577+ttQt6PradxeMkTOxvaGB0UjIe1+l/1OrrV1FamkV5+f3s2/cDysvvp7Q0i/p6vfUqIjJQw+Pj+VzhbEp27+Ldyv0Bv/7x+1f0Lgjg9zfT1dV93OdrCviYItHAqZaVhcBzPbeXA5cDr/Vx3i3GmBuBfcCtZ/E4CRMHmxrPWB0P1QZF4UCT6iRc6GctOMKhFeiumefz1Pvr+c/S1Tx7y20BXXI2VPtXiEQbpyrkacDRntsNQF9LcFQA37TWzgEygcsG+DiMMfcZY9YaY9bW1NQENHA5O4eamxmdePpkeiAv8CIiMjDemBi+MHsu71btZ/W+vQG9dqj2rxCJNk5VyGuB4T23h/d8fbLDwOs9t3cDGQN8HNbax4HHAQoLC9Vj7qDalmZGJiSc9pxoeoHXpDoRCYXi6QX8z7p3eWzN21w8LjtgVfJQ7F8hEo2cqpC/ASzqub0QWNHHOQ8AtxtjXMAMYNMAHydhot3no6mjgxHe0yfkvS/wfdEL/OAVFRWd0A4jIsHR+3+tqKiIlStXsnLlyhOOOSHO4+FzhXNZd6CKd/bvC9h1MzKK6f61fKpA7V8hEo2cSsh/C2QZYzbSXQmvMMb86KRzfgZ8ClgD/MVau7mPx70RwpjlLNW3tQGQ6vWe9jy9wIuIBN5t02aQnpDIf699N2DXDMX+FSLRyJGWFWttO3DdSYcfPOmcA0DRAB4nYepoe3dCPjwu7rTn9b7An7yMljGugL3Ah2N7SDjFIiKDF66taHEeD/ecdz4/fHsVm6oPMSNjVECuG+z9K0SikTYGkqBpaG8HYFhc/BnP1Qt8YGgVFxE53h0F5/Hf773LL9ev5bGrrw3YdYO5f4VINFJCLkHT0tkJQGJszIDO1wu8iEhgDYuL47bpBfz6g/U8dPEljEke5nRIItIHJeQSNM2dHQAkxMQ6Mn40VovD9a1zkWgRjv/fPnXeBfz6g/X85oP3eXjBZU6HIyJ9cGpSp0SBdp8PAK9Hf/eJiDgla9gwFuXm8YfNm2jzdZ72XK3OJOIMZUoSNG09CXms2+3I+KoWi4h0++TM83i5fDsvbd/GrdNmOB2OiJxECbkETae/e/fNWLd+zJygPz5EpNfcrLFMSh3Bs5s2KiEXCUPKlCRounoScneAdogTEZHBMcZw+4yZfPetErbUVDM1PePYfdE430Yk3KiHXILGby0AbpfzCXlJSYl+qYhIVLt56jRiXW7+sHmT06GIyElUIZegsU4HICIix6TEe1mUO4nnt27h4YsvJa5nwr3m24g4TxVyERGRKPGx6TM42t7GG7sqnA5FRI6jhFyCxtPTqtLlV61cRCQcXDQ2m9GJSTy/dYvToYjIcdSyIkHjNt1/7/l6JneKiIiz3C4X1+dP4Vcb1lPf1kpKvPeE+9WqIuIMVcglaGJ61h/v8Hc5HImIiPS6fvIUfH4/r5bvcDoUEemhhFyCJq5n/fHeHTtFwpF2JpRoMz09g5yUVF7csc3pUESkhxJyCRpvjBJyEZFwY4xh8aTJvLN/H3UtLU6HIyIoIZcg8npiAGjxdTociYiIHG9x3mT81vLaznKnQxERNKlTgigxtjshb+5QQi7hRTsTSrSbOjKd8cNTeK1iBx+fMdPpcESinirkEjRJsXEANHW0OxyJiIgczxjDotxJvL1vLw3teo0WcZoq5BI0w3oScr3YS7jRzoQicMWEXH65fi2r9u5hcd5kp8MRiWqqkEvQDIvrTsiPtrc5HImIiJzsgswxDI+LZ8XunU6HIhL1lJBL0CTExBDrclPfpoRcRCTceFwuLhk/npV7duG32lFZxElqWZGgMcaQ6vVypLXV6VBE+qVWFYlmReMn8NL2bWypqWZ6xiinwwkKn6+R6uqltLbuwOvNIyOjGI8n2emwRE6ghFyCaoTXS12r1rmNBOq1Fok8l2TnAPDW3j0RmZDX16+irGwx1vrx+5txuRKpqHiAgoJlpKQscDo8kWPUsiJBNTIhgVptPCEiEpbSExPJTxvJqn17nA4l4Hy+RsrKFtPV1Yjf3wyA399MV1f3cZ+vyeEIRf5BCbkEVXpCIjUtzU6HISIi/bh43HjWVlXSFmGbuFVXL8Vaf5/3WeunpmZpiCMS6Z9aViSoMhKTqG5uxm8tLmOcDkfOkjbQEYl888eN46kN61h/4AAXjct2OpyAaW3dcawyfjK/v5mWFu1SKuFDFXIJqtFJSfj8furUtiIiEpbmjBmL2xje2b/P6VACyuvNw+VK7PM+lyuRhIRJIY5IpH+qkEtQjUnunsle1dTIx669FlBVdSjRBjoikS85Lo5p6Rm8W7nf6VACKiOjmIqKB/q8zxgX6enFIY5IpH+qkEtQZSb1JOSNDQ5HIiIi/ZmTNZYNhw7Q7vM5HUrAeDzJFBQsw+1OPlYpd7kScbu7j3s8SQ5HKPIPqpBLUI0dNhyAygYl5CIi4eqCzDE8+f46NtdUc37mGKfDCZiUlAXMn19FTc1SWlrKSUiYRHp6sZJxCTtKyCWobrz6asx1V/Nfv36aMk0KHNL0XIlErgtGdyfh6w5URVRCDuDxJJGZucTpMEROSy0rEnSelhZ8iQlOhyEiIv0YlZTEmORkNh466HQoIlFJFfIwE2lb/JaUlPCFZS+ytbaGjMsuO3ZMTqQJkyLitFmjMtlw6IDTYYhEJSXkYSRSt/gdPzyF13eWM9oYjLVOhyMiIn2YNWo0L5dv53BrCyO8eldTJJTUshImInmL3wmpqXT6/fgSvE6HIiIi/SjIGAXApupqhyMRiT79VsiNMS5gUc+Xr1rbXdo0xtxjrX06BLFFlYFs8TtUJ6VMSEkF4N9/9jMWTpjocDThQ7tgikg4md6TkJdVH+LS8TnOBiMSZU5XIf8z8BDwZeANY0zv+1f3Bj2qKBTJW/zmpo4AYOeRww5HIiIi/RkWF0f2sOFsqVGFXCTUTtdDPspaOx/AGPNR4CVjzLWhCSv69G7x21dSfi5b/IbDJNFUr5c0r5fyw3UhHTfcaRdMEQk3U9Mz2Fxb43QYIlHndAn5NmPMM8Bj1tq/GGO6gFeB0aEJLboEY4vfcJokmjdiJDuUkIuIhLUpI0fyWsUOWjo7SYiJcTockajRb8uKtfYe4BdAfc/XfwU+BjwRksiiTKC3+A23SaKT09LYUVeH1SorIiJha8rIdCywo67W6VBEospplz201q4+6etDwA+CGlEUC+QWv+E2STR/ZDpNnR1UNjYwdtjwkI07VKhVRUTCweS0kQBsq6tl1ujMoI0TDu2UIuFE65CHmUBt8Rtuk0Tze17kt9bWKCEXEQlT2cOGE+f2BHXOTzi1U4qEC61DHqF6J4n25VwmiQ7W5LSRGGBzjSYLiUj0KioqOmF503DjdrnISUlh55EjQbl+uLVTioQLJeQRKiOjmO6l5E812Emi5yIpNpaclFQ2azktEZGwNjF1BBVBWqZ2IO2UItFICXmECvQk0UCYnpHBpppDIR9XREQGbkJKKpWNDXR2dQX82uHWTikSLs7YQ26MMcCNwASgome1FRkCAjlJNBBmZozmpe3bqGtpIS0h4cwPEBGJAENtV96clBR8fj9VjY2MT0kJ6LWDteeGyFA3kAr5s8AioBlYbIz5XXBDkkDqnSSam/somZlLHEvGAQp6tmXeWH3QsRhEROT0sod3J+F7jtYH/Nrh1k4pEi4GssrKWGvt7b1fGGPeOtdBjTHxwJ+AccBG4C570gLVPZX5p4F8oBq4GbiS7nXQd/ectsRau+1c45HQmJExCpcxfHDwIJfnTHQ6HBGRkBhqu/JmD+9eCWtfw9GAX7u3nfLkVVaMcTnWTikSDgaSkB81xnwNeA+YC9QZYy611r55DuPeCey31l5njHkJuAp47aRzLgY81tp5xpgSuqv0fuC/rbWPnMPY4pDE2FgmjUjjg0MHnA5FRET6kZGYRKzbzd4gVMgh/NopRcLBQBLyd4EY4KKer98HioBzScgXAs/13F4OXM6pCfkh4LGe2x3HHb/FGHMjsA+49eTKOoAx5j7gPoDs7OxzCFMC7fzRmbxSvgNrLd1vgoiISDhxGcOY5GFUNjQEbYxA7bkhEinOmJBba78dhHHTgN73whrobks5edwdAMaYjwKxwKvAROCb1tq/GWPeBi4DSvp47OPA4wCFhYXaqz2MnDc6k6UflrGr/ggTU0c4HY6ISEiFc6vK8bKSk6lsDF5CLiIncmrZw1qgd7vG4T1fn8IYcwPwJeB6a20XcBh4vefu3UBGcMOUQLswcwwA6w5UORyJiIj0JzM5mYNN2qRHJFT6TciNMY/1fF5hjFne87HCGLM8AOO+QXdPOHS3r6zoY/zRwFeAa621jT2HHwBuN91TtGcAmwIQi4TQxNQRDI+LZ11VpdOhiIhIPzKTkqlubgrKWuQicqp+W1astV/q+Xx5EMb9LXCzMWYj8AFQYYz5kbX2wePOuRvIBF7t6TV+CvgZ3cswfhH4i7V2cxBikyByGcOFmWNYe2BoJ+RDYaUEEZHBykxKxgK1LS1kJic7HY5IxBvIpM6As9a2A9eddPjBk875D+A/+nh4UZDCkhApHJPF8t07qW1pYWSQNghSwiwiMngZid0rnhxqblJCLhICA9mpM4PutpLY3mPW2t8EMyiJbHOzxgLwbuV+FudNdjgaERE5WXpiIgDVzeojFwmFgVTIXwV+R/fmPCLnbEbGKBJiYnhn/94hlZAPte2vRUQGK73n3cvalhaHIxGJDgNJyJuttT8MeiQSNWLcbmaPyWJN5f6AXlcJs4hIYKR5uxPympZmhyMRiQ79JuTGmEt7bq4wxiwFfg00AZzjLp0izB+bzfdXv0lNc/Oxt0bD3VDb/lpEZLBi3G6GxcVxuLXV6VBEosLpKuS9q6v4gM3A7J6vLee2S6cI88d176C6et9ebpoyNSDXVMIsIhI4I7wJHG5Vy4pIKJxu2cNvA5juNQezgb3A5dbaQKxDLlFuenoGKfHxrN63J2AJuYiIBE5qfDz1bW1OhyESFQbSQ/4EsB34IfAJY8xt1trPBTcsiXQuY7hobDar9+7BWkvPWvNDhirvIhLpUuK9WmVFJET63anzONOstf9hrfVbaz8NTA92UBIdLskez8HmJsoPHw74tUtKSpQ0B1hRUdEJk2RFJLINj4ujob3d6TBEosJAEvI6Y0yxMWaCMebjQOMZHyEyAAvG5wDw5t7djsYhIiKnGh4fz9F2tayIhMJAEvK7gTnAT4ELgbuCGpFEjazkYeSmjuDNPbucDkVERE6SFBtLU0cH1lqnQxGJeGfsIbfW1hljXgX2AZustbXBD0uixWXjJ/C/ZRto6ewkISbG6XDkJFrbXSQ8OLFyVHJsHH5raensJDE29swPEJFBO2OF3Bjzn8DHgVbgjp6vRQJi4YSJdHR18fa+PU6HIiIix+lNwls6Ox2ORCTyDWSVlbnW2ot7bv+PMWZ1MAOS6FI4Jouk2Fje2LWTKydOcjocOYnWdheJXok971oqIRcJvoEk5EeMMXcApcA8IPBLYkjUinW7uTQ7h+W7duK3FtcQW/5QRCRYnG4Zi/f0JuQdQR1HRAY2qfMu4Dy6J3XOQpM6JcCunJhLTUszZYcOOh2KiIj0iPd01+zafD6HIxGJfAOZ1HkY+EoIYpEoVZQzAbcxvLaznFmjM50OR/qhVhWR0HK6ZUwJuUjoDGRS57JQBCLRKyXey5yscby+s8LpUEREpEes2w1AR1eXw5GIRL6BtKxsMMbcGPRIJKotys1lx+E6dh7RFAURkXAQo4RcJGQGkpDPB541xrxrjFlhjFke7KAk+vSusPJqxQ6HIxERCT8lJSUhbxvzuLpThE6/P6TjikSjMybk1trLrbUJ1to5PbcXhiIwiS5ZycOYOWo0L+/Y7nQoIiICxPQk5D6/KuQiwTaQHvI4Y8xs0+1eY4y265KguDZvMptqqtlTX+90KCIiUa93GVq/dTgQkSgwkJaVpUBBz+0xwO+CF45Es8WT8gFYVr7N4UhERMRtulMEv1XLikiwDSQhz7DWPmW7fRcYFeygJDplDRvGeaMy+dt2JeQiIk7TPm0ioTOQhHyPMeYhY8zlxpiHgapgByXR69rJ+WyurdFqKyIiYUIdK8Hj8zVSVfUEFRUPUVX1BD5fo9MhiUMGkpDfA7QAtwLNaKdOCaJr8yZjgBe3b3U6FBGRqGZ7MnEVyoOjvn4VpaVZlJffz759P6C8/H5KS7Oor1/ldGjigIGsstJurf2ptfYLPZ/bQxGYRKfRScnMzRrHX7dtxVrVZUREnGJ7auNGKXnA+XyNlJUtpqurEb+/GQC/v5muru7jPl+TwxFKqA2kQi4SUjfkT2FX/RE21VQ7HYqISNTy9xRFTJQ0k4eyfaS6eim2n8my1vqpqVkatLElPHn6u8MY85i19kvGmBX8o4XMAFZrkUswXTNpMt9auZy/bN1MQYbmEIuIOKGrZ73D3vXII1l9/SrKyhZjrR+/vxmXK5GKigcoKFhGSsqCgI/X2rrjWGX8ZH5/My0t5QEfU8Jbv//LrLVf6vl8ubV2Yc+HNgaSoBseH88VE3L569YtdGrLZhERR/RuCOSO8ITcifYRrzcPlyuxz/tcrkQSEiYFfEwJb5H9v0yGrJunTuNwWysr9+xyOhQRkajU4e9uqYhxR3aq4ET7SEZGMcb0/e9qjIv09OKAjynh7XQtK0/1dZjulpV7gxeSCFyanUOaN4E/bfmQKyeqUiAiEmq971DGutwORxJcTrSPeDzJFBQsO6VNxhgXBQXL8HiSAj6mhLd+E3IgAZgJdAEbgLXAemBPCOKSKBfjdnPTlKn8+oP3qWtpIS0hwemQRESiSkdPQh7nOV2qMPT1to/0lZQHs30kJWUB8+dXUVOzlJaWchISJpGeXqxkPEqdrof8dmvtNOAy4G3gE8BK4NUQxSZR7tZpM/D5/Ty/bYvToYiIRJ32Lh8Ace7IrpA72T7i8SSRmbmE3NxHycxcomQ8ivWbkBtjlhpjttCdhF8EPAtcDlwdotgkyuWnjWTmqNH8cfMmrUkuIhJirZ3dCXl8TIzDkQRXb/uI2518bKKly5WI252s9hEJmdO9D9UCvHPc17N6PiygHnIJieLpBXx9+d95/+ABLsgc43Q4IiJRo9XXCYA3wltWQO0j4rx+/5dZaz8VykBE+nL95Cl8760Snt20UQm5iEgINXd0AJAYE+twJKHR2z4i4oTIXstIzkkody3rT1JsLDfkT+VvO7bR0N4W8vFFRKJVc2dPQh4b2S0rIuFACbn0qb5+FaWlWZSX38++fT+gvPx+SkuzqK9fFfJYPjFjJm0+H3/esjnkY5+roqIiioqKnA5DROSsNXV04HG5iHNHfsuKiNOUkMspnNi17HSmZ4zivFGZ/LbsA03uFBEJkcb2dpJjYzHGOB2KSMRTQi6ncGLXsjP5RMFMKo4cZk3l/pCPPVSoGi8igdTQ0U5ybJzTYYhEBb0PJadwYteyM7lucj7fW7WS33zwPvPGjgv5+Gfj+KR45cqVpxwrKSkJbUAiIoNwtK2dYfHxTochEhVUIZdT9O5a1pdg7lp2OvGeGG6bXsBrO9rbh48AACAASURBVMupbGwI+fgiItGmob2N4XGqkIuEgirkcoqMjGIqKh7o875g71p2Op8sOI8n1q/lfzdu4KGLL3UkhoE4vgLeWxkPVlVc1XiRsxfs/5eR4nBrK1nDhjkdRkD5fI1UVy+ltXUHXm8eGRnFeDzJToclogq5nCpcdy3LGjaMj+Tm8ftNZbR0djoSg4hItKhvayM13ut0GAETTquHiZxMFXLpk1O7lp2pcvWp8y7g5fLt/GXrZu4omBXUWIaCUFbjRSR6dHZ1cbS9jRHeyEjIj189rFfvXKmyssXMn1+lXTnFUUrIpV/huGvZhZljKMgYxa82rOPjM2biCvPluJQci4QHtXednSNtrQCM8CY4HElgDGT1sHD7fSfRxZGWFWNMvDHmJWPMB8aYZ0wfi5z2dc5AHieRzRjDkvMvZOeRI6zYtdPpcEREIlJtSwsA6Ql9T/AfasJx9TCR4zlVIb8T2G+tvc4Y8xJwFfDaAM7JHsDjZIg528rVNZMm8x+r3+Lx9e9xxcTcEEQ4NKjCJ9I/tXednd6EfGRCZFTIe1cP6yspd2r1MJHjOTWpcyHw957by4HLB3jOQB4nES7G7WbJ+RfyXlUl7x+ocjocEZGIU93cvSNzpFTIMzKKMabvlMfJ1cNEejlVIU8DjvbcbgDyB3jOQB6HMeY+4D6A7OzswEQsQTOYylXx9AJ++u47/GLdu/zPdTcFL7gop0qiSHQ61NxdSR6VFBkJee/qYWVli7HWj9/fjMuViDEuR1cPE+nlVEJeCwzvuT285+uBnJM0gMdhrX0ceBygsLDQBiZkCSeJsbHcNes8fvruO5QfrmPSiDSnQxKRIUJ/YJ7ZoaZGhsfFE++JcTqUgHFq9TCRgXCqZeUNYFHP7YXAigGeM5DHSZS4e9b5xHs8/M+695wORUQkohxsaiIzOfI2zOldPSw391EyM5coGZew4VSF/LfAzcaYjcAHQIUx5kfW2gdPc84bQGwfxySCnE3l6v9v787joyzP/Y9/7pnJvpKQQAg7hD24EMAIlgBCFfeFoq1d/dX2aH8th9PTxR5Pl3P82artOZ56bI/FU2vd0LojgrIERaLIHpAtYQskJEHIQjYymef3RxKKMEASZuaZ5ft+vXjx5JlnZq6ZeV53rrlzPfeVFhfPHWNzebZ4C9+flM+AlJQL30kuSMvDiQSfQHeYrDhRT58EJasigWJLQm5ZVgtw/Rm7f9iFY7ztkwj27csn8nzxVv64YR0PzphldzgiIj5XU7PmrNrn0tIF5OYuITV1ql+es7y+jkv6ZvnlsUXkbGoMJCEtKymJuWPH8dL2Yu6dOJnspGS7Qwp5Wh5OJHjY0WGysbWV483NZCWGX8mKSLCyq4ZcxGe+mzcJgD+uX2dzJCIivtWVDpO+dqiufTGzAcma4BAJFCXkEvKyk5K5fcw4Xt6+jfL6OrvDERHxGTs6TB6qax9H+yfruhyRQFFCLmHh3omTsbB4QrPkPlVYWKhyFREbdXaY9MZfHSbL6moAdKG8SAApIZewkJ2UzJfG5vLS9mIO1tbYHY6t3O56yssXUlr6Y8rLF+J211/4TiISlOzoMHmgtpb4qCh6x8X7/LFFxDsl5BI27ps4Gadx8F8fF9kdim1qatZQVJRNScl8ysoepqRkPkVF2dTUrLE7NBHpgc4Ok05n0qmZcocjAaczyW8dJg/U1DAoJRVjjM8fW0S80yorYgt/rKnbNzGJr11yKQs3rueeCRMZkd7bR9GGBjtWYxAR/wt0h8n9NccZ1TvDL48tIt5phlwCzp+zuN+dMImE6Gh+99GHPog0tNixGoOIBEagOky2trVRVlfL4NRUvzy+iHinhFwC6vRZ3M7ZW4+ngba29v1u94mLevxecXF8+/I83i0tYVNFuS9CDhl2rMYgIuHlYG0Nbo+HYb3S7A5FJKIoIY9gdlz8F4hZ3G9dOoHe8fH8+sP3sSzroh8vVNixGoOIhJeS48cAGJaWbnMk7XSRukQK1ZBHKDtaMUNgZnEToqP5weQreWDVct7bW8LsYTkX/ZihIDNzHqWlC7ze5q/VGEQkvOz57DMAhgfBDLldv6dE7KAZ8gjk77KR8wnULO68sbkM65XGbz78gNa2Np88ZrCzYzUGEQkvu48dJTspmYToaFvjsPP3lIgdlJBHIDsv/gvUmrouh4OfTP0C+2qO8/y2LT55zFDQuRpDTs5jDBjwE3JyHiM/v1yzSSLSJbuPHmVkEKxQpYvUJdKoZCUC2XnxX+cs7pl/hjTG4fNZ3BmDh5LffyD/9XERN48cQ0psrM8eO5h1rsYgItIdLW43e2uOM3PoMLtD0UXqEnE0Qx6B7L74L1CzuMYY/uWqadS2tPDYx2t9+tgiIuGm5NhnuD0exvTOtDsU239PiQSaEvIIZEcr5jMFak3d0RmZ3DFuPH/dupndnx31y3OIiISDHUerARidYX9ToGD4PSUSSErII1CkXfy34IorSYiO5lfvr4qoZRBFRLrj0+oq4qOiGJRif1OgSPs9JaIa8ggV6FbMdkqLi2fBFVP4xeqVLCst4ZrhkbEMoohId2yrrmJ07wycjuCYq4uk31MiSsgjWCRd/Pfl3Et4YdtW/u39VXxh0GDio6LsDklEJGi0eTxsr6rkS2Nz7Q7lcyLp95REtuD4GiziZy6Hg19Nn0nFiXp+v67I7nBERIJK6fFjNLnd5Gb2sTsUkYikhFwixsR+/bl9zFie2rThvBd4qlWziESarZVHAMjN7GtzJCKRSQm5RJSfTPkCidHRPLBqudcLPGtq1lBUlE1JyXzKyh6mpGQ+RUXZ1NSssSFaEZHA2Fx5hMToaIalpdkdikhEUkIuESUtLp4fT/kCn5Qf5qVPt33uNrVqFpFQUlBQQEFBgU8ea3NFOeP79MVhjE8eT0S6Rwm5RJy5Y8YxsV82D61ZTXXD3zvBqVWziESi+pYWdn52lAlZ/ewORSRiKSGXiOMwhodmzqbZ7eYXq1ee2q9WzSISiTYfqcBjWeRlZdsdikjE0rKHEpGG9krj/07K57dFa1hWuocvDss51arZW1KuVs0iEgxOL1FZvXr1WfsKCwu7/ZiflB/GaQyXaYZcxDaaIZeIdc/leYzuncG/rlpBbXOzWjXLRfNlTa9IoKw7fIgxGZkkRkfbHYpIxNIMuUSsKKeT31z9RW5Z9By/en8Vv519Lbm5SygunoNlefB4GnA4EjDGoVbNIhIUTp8B7/zy15NZ8U7N7lY2H6ng65dednGBichFUUIuEW1cZh/unTiZ36/7iGuG5TBrmFo1i0jk2FhRwUlPG5OzB9gdikhEU0IuEe++iVewfG8p9698jwn9+pEWp1bN0nX+qOkVCZSiQwdxGsPEfrqgU8ROqiGXiBftdPLo7Gupa2nmgVUrvDYMEhEJNoWFhRf9hW9t2UHG9+lLUkyMb4ISkR7RDLkIMLp3BvOvuJJH1q7htZ2fcuvosXaHJN3gi1ranvJ1Ta/YJ9I+v7qWFrZWHuG7eZO83h5p74eInTRDLtLhnssnMrFfNr8oXElZba3d4YiI+NVHhw7SZllcNXCw3aGIRDwl5CIdnA4Hv5s9BwwseHcJbo/3rp3BRkvtiUhPrD6wn4SoKC7tm2V3KCIRTyUrIqfJTk7m36dfzfxlS3h83UfMv+JKu0OScwjGiyn1p/3QE4znUSBYlkXh/r1MHTiYaKfz1P5IfT9E7KYZcpEz3DhyNLeOGsPjn3zEx4fK7A5HRMTndh6tpuLECQoGD7E7FBFBM+QiXv2yYCYbj1Qwf9kSFt/5VdLj4+0O6XM0i6WLKcU3IvU8WrFvLwaYMWTo5/aH6vvhdtdTVbWIpqY9xMXlkJk5D5crye6wRLpMM+RyUdzuesrLF1Ja+mPKyxfidtfbHZJPJERH8/i113O8qYkfvrcUT4Qshah6dJHIsHxfKZf0ySIjPsHuUC5aTc0aioqyKSmZT1nZw5SUzKeoKJuamjV2hybSZZohlx6rqVlzVpv50tIF5OYuITV1qt3hXbQxGZn87AsF/LxwBX9cv457J062O6RTQnUWS0TsV1Ffz9bKI/zzlaE/Trvd9RQXz6Gt7e+TQR5PAwDFxXPIzy9Xp2UJCUrIpUciZRC8K/cSPik/xO8++pBL+2Zx5YCBdockXujLiPhCpJxHy/eVAjB76PDzHhcK70dV1SIsy/uKWJblobp6kTovS0hQQi49EimDoDGG/zdjNjurq/nB0sW8dedX6ZsYXnWJqkcXiSxLS/YwrFcaw9LS7Q7lojU17Tk1GXQmj6eBxsaSAEck0jOqIZceiaRBMDE6mieuu5Emt5vvLXmLk21tdof0Ob5ony1yMXTtQej4rLGRdYfLuGZ4jt2h+ERcXA4Oh/c6eIcjgfj48/8VQCRYaIZceqRzEPSWlIfjIDg8LZ2Hr/4i33tnMb9cvZIHZ8yyOySfUT26SOR4p2Q3bZbFnJyRdofiE5mZ8ygtXeD1NmMcZGTMC3BEIj2jGXLpkczMeRjj/fQJ10FwTs5IvjthEi9s28rzxVvsDkdEpNve3L2TnLR0RqX3tjsUn3C5ksjNXYLTmXRqptzhSMDpbN8fDtcySWTQDLn0SOcgeOYqK8Y4wnoQ/Kf8Kew4WsUvVq9keFo6k7L72x2SiC107YF9evqXrEN1tawvP8w/5U/BGOP7wGySmjqV/PxyqqsX0dhYQnz8cDIy5oXt7yEJT0rIpccicRB0Ohw8ds113LLoee59+01em/cVBqSk2B2WzyiJEglfb+zaCcBNI0fbHInvuVyJYbGQgEQuWxJyY0ws8DdgALAV+Jplnd15xbR/hX8aGAlUAbcCVwMLgf0dh91tWdYu/0ct3kTiIJgcE8ufbriZW196nm+/9Rovz72TpJgYu8MSCShdexBaLMvi9Z2fMrFfNv2Tw2cSQSRc2DVDfhdwyLKs640xi4FZwLtejpsCuCzLusIYUwjMBjzAHyzLejBg0YYJtRb2naG90vjvOTfwjddf4ftL3+ZPN9yMy+G9pl7vu4hcrIstEdpSeYTS48f4P5fP9kN0InKx7ErIZwCvdGyvBKbjPSGvBB7r2D552v7bjDE3AWXA7d5m1+Xzwr2rph2mDBjELwtm8i+rlvOr1Sv5ZcHMs+oy9b6LSDD4247txLpczBk+wu5QRMQLuxLydKC2Y7uO9pKUs1iWtQfAGHMLEA0sA4YCD1iW9bYxZi0wDSg8/X7GmHuAewAGDlRnxUjpqmmHL+dewsHaGp7cuJ4BKSl8+/KJp27T+y6RQqUq/ncxJUINJ0/y5s4dXDt8hMrrRIKUXcseHgU6i9hSOn72yhhzI/AD4AbLstqAY8Dyjpv3A5ln3seyrCcty8qzLCsvIyPDl3GHpK501ZSe+9GULxB/6DAPrXmfxbt3ntqv9/3c1EhGJHAW797JidaT3DluvN2hiMg52JWQr6C9Hhzay1dWeTvIGNMX+GfgOsuyOqcZFwB3mPZFsMcB2/wca8iLpK6adnAYQ/r6zcQc/YwfvruUorKDgN53EbGfZVk8W7yFEem9mZDVz+5wROQc7ErInwOyjTFbaZ/xXmGMGWKMefSM474OZAHLjDFrjDHfAh4Hvgl8DLxmWdangQw8FKm1sP8Zj4feRZ8wODWV7yx+g+1VlXrfRcQvCgsLu1yusqXyCNurq7gr95KwWntcJNzYUkNuWVYLcP0Zu/cBPzzjuN8Av/HyEAX+iSw8qbWwf3hb9WCKy0nTtKnc9PRTLLv7axHXzfR81EhGJPD+smUTiVHR3DxqjN2hiMh52DVDLgGk1sKB42pqJnPNR2AM33jzHTKHvqb3XURsUd3YwJI9u7h9zFgSo6PtDkdEzkOdOiNEJHbV9LfzrXqwtfIId736MvetPMBzN5XiaXgz4t93NZIRCaxnt26m1ePhrvGX2h2KiFyAEvIIEoldNc/Hnw17xvfpy8Ibb+Ebb7zCtxa/w/O3foWsrFifPLaIyIU0tbby7NbNXD1kGEN7pdkdjohcgEpWJCLV1KyhqCibkpL5lJU9TEnJfIqKsqmpWeOz55iU3Z//ue4mSo8d42uv/426lmafPbaIyPm89Gkxx5ub+faEPLtDEZEuMOHe5DIvL89av3693WFIEHG76ykqyv5cw55OTmeSzxv2rNhXyr1vv8nYjD785ebb1JhDRPyqta2N6c88RVZiEi/PvdPucEQiijFmg2VZ3f4mrBlyiTiBbtgzc8gwHr/2BrZVV/LNN16hrqXFp48vInK6N3btoLy+nn/Im2x3KCLSRUrIJeLY0bBn1rDh/P7a69laVcnXX/8btc0qXxER32vzePjD+nWM7p3B9MFD7A5HRLpICblEHLsa9nxxWA5PzLmBT6uruOu1lzne1OSX5xGRyPXW7p3sqznOfROvUCMgkRCihFwiTmbmPNsa9lw9dDj/c/3N7Dn2GXe++hLVDd5n6kVEuqu1rY3//GgtY3pncM3wHLvDEZFuUEIuEcfuRkkFg4fw1I23cKiuli/97UUO19X59flEJDK8/Ok2DtbVsiB/Kg7NjouEFK2yIhHL7T5ha6OkjRXlfOvNV4l3RfGXm28nJz09YM8tIuGlqbWV6c88xYDkFF66/Q6Vq4jYRKusiHRTZ6OkYcMeIivr7oB3z7w8qx8v3DaPNsti3isvsrGiPKDPLyLh48+bN1LV0MCPplylZFwkBCkhF7HR6N4ZvDz3DlJiYrnrtZdZuW+v3SGJSIipbmzgj+vXMXPIUCb26293OCLSA0rIRWw2MCWVl+feyfC0dL6z+HVe3LbV7pBEJIT8ruhDmtvc/HTqNLtDEZEeUkIuEgR6x8fzwq1fYurAwdy/8j0eXbsGT5hf3yEiF29r5RFe2l7M18ZfxtBeaXaHIyI9pIRcJEgkREfzpxtu5s5x43li/cfMX/Y2LW633WGJSJDyWBa/XL2S9Ph4vj853+5wROQiuOwOQET+zuVw8O/Tr2ZAcgoPr/2Aw3V1/PH6m8iI997ISEQi198+3camIxU8MusakmNi7A5HRC6CZshFgowxhu/mTeKJOTey82g1N7/4HJ9WV9kd1kVxu+spL19IaemPKS9fiNtdb3dIIiHtaGMjD615n7x+2dwyaozd4fiUxguJRFqHXCSIbauq5J63Xqe2pZlHZl3DnJyRdofUbTU1aygunoNlefB4GnA4EjDGQW7uElJTp9odnkhI+v47i3m3tITFX/4qw9PCp4eBxgsJdVqHXCQMjcvswxt33MWYjEy+985iHl27hjaPx+6wusztrqe4eA5tbfV4PA0AeDwNtLW173e7T9gcoUjoea+0hMV7dnHfpMlhlYxrvJBIpoRcJMhlJCTw7C1zuWNsLk+s/5i733yN401NdofVJVVVi7As718gLMtDdfWiAEckEtpqm5t5oHA5o3pn8N0Jk+wOx6c0XkgkU0IuEgJiXC4enDGLB2fM4qNDZdz44rNsrTxid1gX1NS059RM15k8ngYaG0sCHJFIaHugcDnHmpr4zdVfJMrptDscn9J4IZFMCblIiDDGcOe48SyaewcWFl96+UWe3bqZYL4OJC4uB4fD+woxDkcC8fHDAxyRSOh6Y9cOFu/exQ8m55Ob2cfucHxO44VEMiXkIiHmkj59eeuOr5I/YCD/WriC7y9dTH1Li91heZWZOQ9jvA8zxjjIyJj3uX0FBQUUFBQEIDKR0FJWW8sDq5YzIasf3wmzUpVO3R0vRMKJEnKRENQrLo6nbryFH115FUtL9nDji8+yJQhLWFyuJHJzl+B0Jp2a+XI4EnA62/e7XIk2RygS/Frb2vjHZW8D8B9fnIPLEZ6/ujVeSCRTYyCREOXoWK88r18285e9zdyXX2DBFVO4Z8JEHMbYHd4pqalTyc8vp7p6EY2NJcTHDycjY15I/HLtnK0vLCy0NQ6JbL/58AM2Hqngv665jv7JKXaH41ehPF6IXAwl5CI+5HbXU1W1iKamPcTF5ZCZOQ+XK8mvz5nXL5u37/wa9698j4fXfsAHB/fzyKxr6JeU7Nfn7Q6XK5GsrLu93nZ6icrq1avP2qdk2L/0pSO4Ldmzm//dvIGvX3IZ148YZXc4AXG+8UIkXIXn371EbFBTs4aiomxKSuZTVvYwJSXzKSrKpqZmjd+fOyU2lsevvZ5fz5zNlsojzHn+Gd7YtSOoL/gUkfMrOfYZP16+lMv6ZvHTqdPsDkdE/Egz5GI7O2aVfe30hhadOpfvKi6eQ35+ud//5GqM4Utjc5mcPYB/encJ/7hsCe+WlvCrgpmkx8f79bkvxukzs8EwW6sZ+8gQ7ONOTXMT337rdWJdUfz3nBuIDrMlDkXk85SQi628tUkuLV0Qcm2Su9LQIlB/gh2UmsqLt9/BnzZ+wn9+tJZ1h8v41fSruXb4iIA8vwS/SP/SEezjzsm2Nu5b8hYV9fU8e+tc+iYGzxcFEfEPJeRim2CYVfaVYGto4XI4+Ie8yUwfPJQfvbeU+5a8xbXDR/CLghlkxHtf51faBduMvfhWsI87lmXxr6uWU3SojN/Oupa8ftm2xSIigaOEXGwTTLPKF6uzoYW3pNzOhhajemfw6ryv8KeNn/DYR0UUHTrIz64q4NZRYzBBtBJLJyW+gRHJXzqCfdx5Yv3HvPTpNr438QpuGT3GtjhEJLB0UafYJthmlS9GMDe06JwtX/zlrzKsVxr//N5S7nrtb+yrOW5bTCJ2CeZx54VtW/lt0YfcMmoM86+40rY4RCTwlJCLbcKpTXIoNLQYnpbOotvv4N+nX822qkqufe4v/OdHa2lxu+0OLWgVFhZGzMxxpAjWceedkt08sGo5BYOH8OuZs4Oql4CI+J8J92XR8vLyrPXr19sdhnjhdtdTVJT9uVrOTk5nku21nD3hdp8IiYYWVQ0n+PcPClm8excDk1P4ecEMpg8eGrDnD/YVLiR8BeO4s3LfXv7h7TfIzezDM7fMJT4qKqDPLyK+Y4zZYFlWXrfvp4Rc7ORttQNjHEGz2kG4+7DsAD8vXMHe48eZOWQo/3LVdAalpvr1OfWZi92C6RxcvX8f31n8BiN69+bZW24nOSY2oM8vIr6lhPwclJAHv1CZVQ5XJ9va+PPmDTy+7iNa2zx887LLuTdvMkkxMT5/rmCcnZTIFAzjTuH+fXz37TcY3iuNZ2+dS2psXECfX0R8Twn5OSghF+mayhMneLRoDa/s2E56XDz/lD+F28eMw+Xw3aUm5eULKSmZf87VaHJyHguZlXVELsbSkj38YOliRqT35pmbb6dXnJJxkXDQ04RcF3WKCAB9EhN5ZNY1vD7vKwzp1Yv7V77Hdc8/w4p9pfjqi3swr3AhEigvbS/me++8RW5mH567da6ScRFRQi4inze+T18W3TaPJ+bcSKvHw7ffep0vv/oSmyrKL/qxg3WFC5FAsCyLP6z/mJ+seJcpAwbyzC1zVTMuIoASchHxwhjDNcNzWPaVr/PLgpmUHDvGbS+/wHcWv87Oo9U9ftxgXq9dxJ9a29r4l1XLeWTtGq4fMZInr79Zq6mIyCmqIReRC2o4eZKnt2zkfzZ8QsPJk1yXM5IfTM5nWFp6tx8rmFa4EAmEupZmvv/O27x/cD/35k1mQf4UrTMuEqZ0Uec5KCEX8Z2a5iYWbtzA01s20ux2c/2IkdyXdwU56d1LzINhhQuRQCg59hnfWfwGZXW1/Nv0q5k3NtfukETEj5SQn4MSchHfO9rYyMJN63l262aaWluZkzOCe/MmMzoj0+7QRILGu6V7+OG7S4lxufjvOTcwKbu/3SGJiJ8pIT8HJeQi/nOsqZGnNm3gr1s2c6L1JNMHD+W7eROZ2E+Jh0Suk21tPLr2AxZu2sD4Pn15Ys4N9EtKtjssEQkAJeTnoIRcxP9qm5t5Zusmnt68kePNzUzI6se3L8/j6qHDVSsrEaWstpbvL13MlsojfHX8pdw/dRoxLpfdYYlIgCghPwcl5CKB09TaysufbuOpTRsoq6tlcGovvnHJZdw+ZpxWlJCwZlkWr+zYzq9Wr8IYw0MzZzMnZ4TdYYlIgIVUQm6MiQX+BgwAtgJfs7wEYoy5BlgI7O/YdTdwoCv37aSEXCTw3B4Py0r2sHDTerZUHiE5JoZ5Y3P56vhL6Z+cYnd4Ij5V3dDAA6uW8+7eEiZn9+fRWdeSnawSFZFI1NOE3K6/o90FHLIs63pjzGJgFvDuOY79g2VZD3b+YIz5P924r4jYwOVwcN2IkczJGcHGI+U8vXkj/7tpA09t2sDMIUO5K/dSpgwcpHIWCWmWZfH6zh382weraGxt5f6p0/jWZRN0XotIt9mVkM8AXunYXglM59xJ9W3GmJuAMuD2bt5XRGxkjGFCVjYTsrKpqK/n2eLNLNpWzHt7SxmUksqd48Zz2+ixpMfH2x1qUCkoKACgsLDQ1jjk3PbVHOfnq1awpuwAE7L68euZs3u0Lr+ICNiXkKcDtR3bdcDIcxxXCjxgWdbbxpi1wLSu3NcYcw9wD8DAgQN9GLaI9FRWUhL/fOVVfH9SPktL9/Ds1s38+sP3+V3Rh8weNpy5Y8cxZYBmzSW4NbW28scN6/if9Z8Q7XLSa3MxVa++xbC5d9odWshxu+upqlpEU9Me4uJyyMych8uVZHdYIrawKyE/CnQWkqZ0/OzNMWB5x/Z+ILMr97Us60ngSWivIfdJxCLiEzEuFzeNHM1NI0ez+7OjvLhtK6/u/JTFe3aRnZTMbaPHcuvoMQxMSbU7VJFTPJbFm7t28MjaD6g4cYKbR47mp1OnMffFVy58ZzmLt469paUL1LFXIpZdF3V+C5hsWdZ3jDFvA/9hWdZyL8c9COwG/gpsBu4ArujKfTvpok6R4NfidvPu3hJe3r6ND8sOYAET+2Vz66gxXJszguSYWLtD9LvOMhWA1atXAzBt2rRT+1S+Yp+isoP8Zu0HbK08Qm5mH352VcGpXL5UtAAAEkNJREFUJj8qL+o+t7ueoqJs2trqz7rN6UwiP79cnXslZIXaRZ3PAbcaY7YCW4AVxpghwH2WZf3wtOMeB14Avge8ZlnWp8aY0jPvG+DYRcTHYlwubhgxihtGjKK8vo7Xd+7glR3b+enK9/j56pUUDB7CjSNGMWPIUGJdWj5RfONCyfSWIxX8tuhD1pQdICsxkd/OupabRo1mxvTpp47p/PJ0+heqYEjOg/mLQlXVIizL4/U2y/JQXb2IrKy7AxyViL1sScgty2oBrj9j9z7gh2ccVwEUdOG+IhIm+iUlc+/EyfxD3iS2VlXyRkc5y7ulJSRERXH10OFclzOCqwYODquGK6cnTsGcTEWCjRXl/H5dEasP7CctNo6fXVXAXbmXhNX5Zqempj14PA1eb/N4GmhsLAlwRCL20+giIkHJGMMlffpySZ++/OyqAj46XMZbu3ayrLSEN3btIDE6mhlDhjJ7aA7TBg0mITra7pAlhHksi9UH9vGnDev56HAZabFx/OjKq7hr/KUknnFu6cvTxYmLy8HhSPCalDscCcTHD7chKhF7KSEXkaDndDiYMmAQUwYM4t+mX83asoMsKdnNir2lvLlrJzFOF1MGDGTWsOHMGDKUjPgEu0OWIHVmrb6JiiLvG1+jftgQWlOSyUpM5P6p0/hy7iUh113W23UIwVZKA5CZOY/S0gVebzPGQUbGvABHJGI/JeQiElKinE6mDR7CtMFDcHs8bCg/zLLSPby3t5SV+/digPF9+jJjyFCmDRrCuMw+IbeUYrAkTuGsNTGBtJuuJ3HyJI4lxBNVU0v6JxspfPoZopxOu8MLay5XErm5S85aZcUYB7m5S3RBp0QkW1ZZCSStsiISGSzLYufRapbvK2XVvn1sqazAAtLj4vnCoMFcNXAQUwcOpreaEEWsxtZWlpbs5qXt21hXfgg8HuLKj/DnH/wjE/tlY0Lsi9v52F1K05U1xt3uE1RXL6KxsYT4+OFkZMxTMi4hr6errCghF5GwdLSxkTUH91N4YB8fHNjP8eZmAMb0zuDKAQPJHzCQif36n1UfLOHF7fFQVHaQN3fvZGnJbhpaWxmUksqXxo7j+Z/9K86WlrD8i4SdCbm3NcY7Z7+1xriEu1Bb9lBExK96x8dz86gx3DxqDB7LYnt1Fe8f2M+HBw/wzJbNLNy0Aacx5Gb2ZVL//kzO7s+ErGySY2LsDl3O0N3ksrWtjY8Ol7GstIRlJbv5rKmJxKho5uSM5LbRY0/Nhi9qafFf0BHK7a6nuHjO59YY77x4s7h4jtYYFzkHJeQiEvYcxpCb2YfczD7cN3Eyze5W1peX8/HhMj46VMafN23gyQ2fYIDRvTOY0C+bCVn9uDyrH9lJyWFVyhCu6lqa+eDAAVbu38vKfXupbWkmzuVi5pBhXDdiJAWDhpy1bGE4zox3suu1aY1xkZ5RQi4iESfWFcXUgYOYOnAQAE2trWw+UsHHhw+xvuIwr+zYzl+3bgbaZ9ov7ZPFJX37Mj6zL7l9+pAaG2dn+EL7LHhxVSVrDh7gg4P72XykgjbLoldsLDOHDOWLw3K4atAgNZIKMK0xLtIzSshFJOx05YKy08VFRZHfUVcO7XXHu45Ws+lIBZuPVLDpSAXL95WeOn5AcgrjMvswNiOT0RkZjOmdSWZCgt9m0rv7ekLF+V7XWcsTulzk33oLLb3TaO7dG+eAbBpaWzHAuMw+fGfCJKYPGcKlfbJwOhz2vCDRGuMiPaSLOkUkrPjrgrK6lmaKqyoprqxkW1X7v4N1tadu7xUby4j03oxM701Oem9y0tLJSUunV9zFzaaH6wVy53tdSclX8oUbb+RkrxRaeqVy1OUkpn82pqPkxFVXz7wpU8nvP4Ar+g8gLU4r5wQLt7ueoqLsz9WQd3I6k1RDLmFPq6ycgxJykcgR6GSgrqWZnUePsuNoFbuOHmXn0aPsOXaUhtbWU8ekxcYxLC2NIam9GJzaiyG9ejEwJZWBySkX7C4arslN5+tyu+upb0ugorkPh5v7cqi5L4da+lPeMpRGtxuAOJcLT0Ul0ceP88g/LuDyrGwtXRnkwvVLpEhXaJUVEYl4gb6gLDkmlknZ/ZmU3f+057Eor69n97GjlB47xt7jxyg9foyV+/dytLHxc/dPj4unf3Iy/ZOTyU5Kpl9SMlmJSfRJTKRvYiItNS+G/AVybo+HqoYTHK6v41BtHWV1teyo+ISSo9/iSEsaDW1/76oa72xkQGwlcwY7mDzkGsZkZJKTls7VM2YAMHtYjl0v45RwLR/ypdTUqeTnl2uNcZFuUEIuImEjGC4oM8aQnZxMdnIy0wcP/dxtdS0t7K85zsHaGg7U1nKorv3ftqoq3ist5aSn7XPHO4xFknMBqVH1JLvqSXadINl1gkRnA4muBvY7DzKyrYyU2FiSYmJIio4mISrarzXUHsvixMmT1Le0UNfSzPHmZmqamzjW1MRnTY0cbWykuqGBqoYGKhvqqWxowHPGX2IzYtvo7WomL2UrWTFV9IutpF9MJb2iajEGBgz4CcOGjfXba+gpbzO/paULNPPrhcuVGPRfFkWCiRJyEQkbwX5BWXJMDOP79GV8n75n3eaxLD5raqSivp7KEyc40nCC0iNr2Fe1iZrWOOrcSRxqzqLenYjb6hi6DwEbXjrrsWJdLuJdUcRGuagqr8C0tTF25CiinA5cDicuh8FhHDiMwQAWYGHh8Vi0WR7cHg+tbW2cbGuj2e2mpa2NJncrja3t/84nNTaWzPgEMhMSGdprYPusf1IS/RKTGJCSQnZSMp9VPU1Jya+6/DkFw/KEWl9bRPxJCbmIhI3MzHmUli7wepsxDjIy5gU4oq5zGENGfAIZ8QnQp32fe8wwioru/1wSaFnQ4omm0cpk2Nj3OeF2UNvcQv3JFk6cPMmJky2nEudmt5t3duzEcjpJjomh1dPGyTY3Ta3tiffp1xAZY3B0/ItyOImLiiI5NpZYp4tYl4u4qCjiO/4lRceQFBNDckwMvWLjSI2NpVdsHGlxcUQ5nRd8raH4OWl9bRHxJyXkIhI2XK4kcnOXnPOCslCbwfT2epzOBBJcDq7IfYHU1CEXfIxPHvw1AE8/9Ii/w+2yUPycgqEcSkTClxJyEQkr4XZBWU9ez5lreJ+5LxhKQELtcwr2cigRCW1KyEUk7ITbBWXh9no6hdLrCsUyGxEJHUrIRUTCzOkz4J0z48EwKx7KQrHMRkRChxJyERGRLgi1MhsRCR1KyEVERLoolMpsRCR0KCEXEUAdCMOVSlVERIKfEnIRUQdCERERG/mvv7KIhITTOxB2Lunm8TTQ1ta+3+0+YXOEIiIi4U0JuUiE60oHQhEREfEfJeQiEU4dCEVEROylhFwkwnV2IPRGHQhFRET8Twm5SITLzJyHMd6HAnUgFBER8T8l5CIRrrMDodOZdGqm3OFIwOlMUgdCERGRANCyhyKiDoQiIiI2UkIuIoA6EIqIiNhFJSsiIiIiIjZSQi4iIiIiYiMl5CIiIiIiNlJCLiIiIiJiIyXkIiIiIiI2UkIuIiIiImIjJeQiIiIiIjZSQi4iIiIiYiMl5CIiIiIiNlJCLiIiIiJiIyXkIiIiIiI2UkIuIiIiImIjl90BiIiIRCq3u56qqkU0Ne0hLi6HzMx5uFxJdoclIgGmhFxERMQGNTVrKC6eg2V58HgacDgSKC1dQG7uElJTp9odnogEkEpWREREAsztrqe4eA5tbfV4PA0AeDwNtLW173e7T9gcoYgEki0JuTEm1hiz2BizxRjzV2OMOcdxBcaYNR3/yowxXzfGXGOMOXTa/pGBjl9EpKvc7nrKyxdSWvpjyssX4nbX2x2SBIGqqkVYlsfrbZblobp6UYAjEhE72VWychdwyLKs640xi4FZwLtnHmRZViEwFcAY8zawCegH/MGyrAcDF66ISPepJEHOpalpz6mZ8TN5PA00NpYEOCIRsZNdJSszgPc6tlcC0893sDEmHhhuWdbWjl23GWPWGWNeOdfsuoiInVSSIOcTF5eDw5Hg9TaHI4H4+OEBjkhE7GRXQp4O1HZs1wFpFzh+FrCiY7sUeMCyrElAFjDtzIONMfcYY9YbY9ZXV1f7KGQRka4L95IEleJcnMzMeRjj/VewMQ4yMuYFOCIRsZNdJStHgZSO7ZSOn8/nBuDVju1jwPKO7f1A5pkHW5b1JPAkQF5ennWRsYqIdFs4lySoFOfiuVxJ5OYuOet9NMZBbu4SXK5Eu0MUkQCya4Z8BTC7Y3sGsOpcB3aUpEynvbQFYAFwh2mfWhgHbPNjnCIiPRKuJQkqxfGd1NSp5OeXk5PzGAMG/IScnMfIzy/XlxqRCGRXQv4ckG2M2Ur7jPcKY8wQY8yjXo6dCGy3LKu54+fHgW8CHwOvWZb1aUAiFhHphnAtSQj3UpxAc7kSycq6m2HDHiIr627NjItEKFtKVizLagGuP2P3PuCHXo5dB9x42s8VQIE/4xMRuVjhWpIQzqU4IiJ2UadOERE/6SxJqK5eRGNjCfHxw8nImBeyyTj8vRTHW1IeyqU4IiJ2UkIuIuJHnSUJ4SIzcx6lpQu83hbKpTgiInayq4ZcRERCUGcpjtOZdOqiVYcjAaczKaRLcURE7KQZchER6ZZwLMUREbGTEnIREem2cCvFERGxk0pWRERERERsZCwrvBtZGmPqgV12xyFBpzcX7hArkUfnhXij80K80Xkh3oy0LCupu3eKhJKVXZZl5dkdhAQXY8x6nRdyJp0X4o3OC/FG54V4Y4xZ35P7qWRFRERERMRGSshFRERERGwUCQn5k3YHIEFJ54V4o/NCvNF5Id7ovBBvenRehP1FnSIiIiIiwSwSZshFRERERIKWEnIRERERERuFdUJujIkyxrx1gWNijTGLjTFbjDF/NcaYQMUngdfVz9sYc40x5pAxZk3Hv5GBjlX8oyvngMaFyNPF80LjQgS6UC6h8SIydeG86NZ4EbYJuTEmDtgAzLrAoXcBhyzLugTo1YXjJbR15/P+g2VZUzv+qblU+OjKOaBxIfJ09TPXuBBBuphLaLyIMN3IMbs8XoRtQm5ZVpNlWeOBQxc4dAbwXsf2SmC6XwMTu3Xn877NGLPOGPOKZjzCSlfOAY0Lkaern7nGhQjSxVxC40WE6UaO2eXxImwT8m5IB2o7tuuANBtjEf/r6uddCjxgWdYkIAuYFoDYJDC6cg5oXIg8XfnMNS6INxovxJtujRdKyOEokNKxndLxs4Svrn7ex4DlHdv7gUz/hiUB1JVzQONC5OnKZ65xQbzReCHedGu8UEIOK4DZHdszgFU2xiL+19XPewFwhzHGAYwDtgUgNgmMrpwDGhciT1c+c40L4o3GC/GmW+NFRCXkxpghxphHz9j9HJBtjNlK+7eZFYGPTALorM/7HOfF48A3gY+B1yzL+jTAcYr/nHkOlGpcELp2XmhciHDKI8QbX+QR6tQpIiIiImKjiJohFxEREREJNkrIRURERERspIRcRERERMRGSshFRERERGykhFxEJEQYY542xrzcsf2iMebp0277vR+f9xfGmIJz3Naj5zXGRBlj3rqowEREwoQSchGR0DK+4/9LTt9pWdb/tSGWHj2vMSYO2ADM8n1EIiKhRwm5iEhocRtj0oG203caYwpP247tmEEvMsa82ZEAY4wpNMY8ZIxZ2vFzujHm7Y7j/rNjX++OfR8bY/7c0dQC4GpjzIfGmC3GmL7neN5fGGOWdBz3kjHG6e0FWJbVZFnWeOCQT94REZEQp4RcRCS0bAbmdfx/LvcAWyzLygfe5O+z6pOBTyzLuqbj558CL3Yc18sY80XgfuBZy7ImA7uBQR3HjgSmAs/T3o3wXNZaljUF+Ay4qbsvTkQkEikhFxEJLRuAb3T8fy6jgHUd2/8LrO/Y3m5Z1qunHTcGKOrYLur4+fT7Pgwc6Nj+i9XeSa4SiD7Pc3/S8f9mYMj5XoiIiLRTQi4iElo2AhM7/j+XnbTPhgP8jPb2zQAnzjhuO3BFx/YVHT+fft8n+fts+Jn3PZfO+14OlHbxPiIiEU0JuYhIaNlPeynJgfMc8yRwqTFmDXAZ8Ow5jnsIuMMYUwTUWJb1bse+rxpjPgQ8wIpuxpfX8bwptJfLiIjIBZj2v0CKiIhcHGPML4BCy7IKbQ5FRCSkKCEXEREREbGRSlZERERERGykhFxERERExEZKyEVEREREbKSEXERERETERkrIRURERERs9P8BQ+4VhZAhFJAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(-1, 1.5, 250)\n",
    "xx, yy = np.meshgrid(x, x)\n",
    "\n",
    "z = feature_mapping(xx.ravel(), yy.ravel(), 6, as_ndarray = True)\n",
    "z = z @ final_theta\n",
    "z = z.reshape(xx.shape)\n",
    "\n",
    "plot_data()\n",
    "plt.contour(xx, yy, z, 0)\n",
    "plt.ylim(-.8, 1.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]\n",
      " [1 2 3]\n",
      " [1 2 3]\n",
      " [1 2 3]]\n",
      "[[11 11 11]\n",
      " [22 22 22]\n",
      " [33 33 33]\n",
      " [44 44 44]]\n"
     ]
    }
   ],
   "source": [
    "a = np.array([1,2,3])          #a.shape  (3,)\n",
    "b = np.array([11,22,33,44])    #b.shape  (4,)\n",
    "x,y = np.meshgrid(a,b)\n",
    "# 返回list,有两个元素,第一个元素是X轴的取值,第二个元素是Y轴的取值\n",
    "print(x)                              #x.shape(4,3)\n",
    "\n",
    "print(y)                             #y.shape(4,3)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.contour.QuadContourSet at 0x7f87d7ea6b10>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "a = np.array([1,2,3])\n",
    "z = np.array([[0,1,1],[1,0,1],[1,1,0]])\n",
    "x,y = np.meshgrid(a,a)\n",
    "plt.contour(x,y,z,3)          #数字3是等高线的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.contour.QuadContourSet at 0x7f87d7e1ae90>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD6CAYAAACs/ECRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAF3JJREFUeJzt3V2sVOW9x/Hvn7NBIVZqtyUCp/XY7JQ0QdvkUOMpJLzkbGIi4AuexAtT0nKyb2piQvGq5U4ubIyNCQ3JjrE2HuNFizStNmfLS7mgLxKb1q0loZaWRogHAySiLdVg/+di1tRhWLNnzcwzs55nrd8nIcxe8+zNw+yV+fKfl425OyIiUl/zyt6AiIiUSyEQEak5hUBEpOYUAhGRmlMIRERqTiEQEam5riEwszEz+6GZ/cLMnu6w5loze9HMXjOzZ63hqmPhty8iIoMqMhHcA7zm7quBpWb2pZw1DwKn3f2LwA3AZIdjIiISmSIh+F/gCTMbAz4JXMxZswE4kF0+DKzvcExERCIz1m2Bu78PYGavAG+7+59ylo0D72aXLwIrOhy7gplNAVMA1yyyf//Xz13b6/5FpMWZS58sewvFvP8vZe+gsAUXL5e9hTldvPR/59z904N8ja4hMLNx4H3gK8BhM1vv7j9vW3YOWJxdXpx9fF3OsSu4+zQwDTBx6yL/zo+vaoWIFPSt2Xv4t7I3UcDY0evL3kLPlh84X/YWOpp5ffdfBv0aXUMAfBM47u7/Y2Z/AxbmrDkEbAT20XhI6LvAZ3OOiUhg35q9p+wtFJJiAJrOTI4DcQdhEEWeI/ge8HUz+xVwHjhhZo+3rXkOWG5ms8AFGmHIOyYiASkCo9UMQtUUeY7gDI1/0bfa2bbmA2BT25q8YyISgAJQnipOB3pDmUhiFIE4VGk6KPIcgYhEQAGIT1WmA00EIglIIQJjR6+vVQRapT4daCIQiVgKAYB6TQGdpDwdaCIQiVQKEajzFNBJitOBJgKRyKQQANAUMJfUpgOFQCQSCkD1nJkcTyIGemhIJAKKQHWdmRyP/uEiTQQiJVIA6iPmh4s0EYiURBGopxinA00EIiOmAEhs04EmApERUgSkVSzTgSYCkRFQAKSTGKYDTQQiQ6YISBFlTgeaCESGRAGQXpU1HWgiEBmCFCKgHw8Rr1FPB5oIRAJKIQCgKSAFo5wONBGIBJJCBDQFpGcU04EmApEBpRAA0BSQsmFPB11DYGYGPAOsAN4B7nP3y21r1gGPZh/eDHwbOAs8BZzKjm939xMhNi0SAwVARm1YP8SuyENDq4Exd78DuB7Y2L7A3Y+4+xp3XwPMAr/NrtrbPK4ISJUoAlKWYfwQuyIPDZ0FnswufzjXQjNbBEy4+6yZLQO2mtndwFvA/e7uA+1WpGQKgMTinzF4ffCv1XUicPc33f2Ymd0LLABm5lg+CRzKLp8Edrn77cBSYO2gmxUpkyIgVVXoyWIz2wI8DGx294/mWLoZeCG7fAE4mF0+BSzJ+bpTwBTAjcvmF9uxyIgpAFJ1XScCM7sJeAS4y93fm2OdAeuBw9mhHcADZjYPWAm80f457j7t7qvcfdXiT+kFTBIfRUDqoMi97zYaD+3MNO7r+T7wBXff2bbuy8Dv3f3v2cd7gOeBh4D97n48zJZFhk8BkDrpGgJ3fwx4rMC6Y8CWlo/fBtYNsjmRMigCUjd6PEYkowBIXSkEIqQRAQVAhkUhkFpLIQCgCMhwKQRSWylEQAGQUVAIpHZSCAAoAjI6CoHUhgIgkk//H4HUgiIg0pkmAqk0BUCkO00EUlmKgEgxmgikchQAkd5oIpBKUQREeqeJQCpBARDpn0IgyUshAgqAxEwhkGSlEABQBCR+CoEkKYUIKACSCoVAkpJCAEARkLQoBJIEBUBkePTyUYmeIiAyXJoIJFoKgMhoaCKQKCkCIqPTdSIwMwOeAVYA7wD3ufvltjV3Ak8Bp7JD24G/AD8CPgPMAl91dw+1cakmBUBk9IpMBKuBMXe/A7ge2Nhh3V53X5P9OgE8CJx29y8CNwCTQXYslaUIiJSjyHMEZ4Ens8sfzrFuq5ndDbwF3A9sAPZl1x0G1gMv97lPqTAFQKQ/l9dchCcG/zpdJwJ3f9Pdj5nZvcACYCZn2Ulgl7vfDiwF1gLjwLvZ9ReBT7V/kplNmdmrZvbquxcut18tNaAIiPTn8pqLwb5WoVcNmdkW4GFgs7t/lLPkAnAwu3wKWAKcAxZnxxZnH1/B3aeBaYCJWxfp+YMaUQBE+hMyAE1dJwIzuwl4BLjL3d/rsGwH8ICZzQNWAm8Ah/j4+YQNwM8H365UQQoRGDt6vSIg0RlGBKDYRLCNxsM9M40XEPF94AvuvrNlzR7geeAhYL+7Hzezk8B9ZjYLvEYjDFJjKQQANAVIfIYVgKauIXD3x4DHuqx5G1jXduwDYNMgm5PqSCECCoDEZtgBaNI7i2WoUggAKAISn1FFABQCGRIFQKQ/owxAk37EhASnCIj0p4wIgCYCCUgBEOlPWQFo0kQgQSgCIv0pOwKgiUAGpACI9CeGADRpIpC+KQIi/YkpAqCJQPqgAIj0J7YANGkikJ4oAiL9iTUCoIlAClIARPoTcwCaFALpKoUIKAASoxQiAAqBzCGFAIAiIPFJJQBNCoHkSiECCoDEJrUANCkEcoUUAgCKgMQn1QiAQiAZBUCkPykHoEkvHxVFQKRPVYgAaCKoNQVApD9VCUCTJoKaUgRE+lO1CIAmgtpRAET6U8UANHWdCKzhB2b2azP7iZldFY+8NWZ2p5mdNrOj2a8Vw/krSFGKgEh/qhwBKDYRrAbG3P0OMzsCbAR+VmDNP4C97r474H6lDwqASH+qHoCmIs8RnAWezC5/2OOarWZ2zMz2mZn1uUcZgCIg0p8UIrD7th8H+TpdJwJ3fxPAzO4FFgAzBdd8Dtjl7i+Z2S+BtcCR1s8zsylgCuDGZfMH+XtIGwVApD8pBADCRQAKPllsZluAh4HN7v5RkTVmdgE4mF19CljS/jnuPg1MA0zcush73r3kSiECqQRg+YHz/7x8ZnK8xJ3IKKQQgZABaOoaAjO7CXgEuNPd/9rDmh3AH8zsWWAl8GiYLUsnKQQA0oxA82PFoJpSCAAMJwJQbCLYBiwFZrKH+b8PfMHdd86x5mlgD/A88BCw392PB9y3tEkhAqkGIO86BaEa6h6AJnOP4xGZiVsX+Xd+rFeY9iqFAEA1IpBHQUhXVSKwdeJ3v3H3VYP8GXpDWaIUgLB6DUDr5ykGaalKAELSj5hIkCIQVr8RaP38Qb+GjIYikE8TQUIUgLBC33lrOoiXAjA3TQSJUATCGta/4DUdxEcR6E4TQeQUgLBGdSet6aB8CkBxCkHEFIFwyvhXul5qWh5FoDcKQYQUgLDKfqhG08HoKAD9UQgiowiEU3YAWmk6GL4UIhBbAJoUgkgoAGHFFIFWmg7CSyEAEG8EQCGIQgoRUADC0XQQTgoRiDkATQpBiVIIACgCw6LpoH8pBADSiAAoBKVQAMJKLQCtNB30RgEYDr2hbMQUgbBSjkArvRGtO0VgeDQRjIgCEFZV7zT1cNHVFIDh00QwAopAWFWNQJOmg48pAqOhiWCIFICw6nbnWOfpQAEYLYVgSBSBcOoWgFZ1fDJZERg9hSAwBSCsOkegVR2mAwWgPApBQIpAOArA1ao8HaQQgSoGoKlrCKzxv9E/A6wA3gHuc/fLbWuuBX4EfAaYBb4KXNN+zGP5D5IDUwDCUgTmVqXpIIUAQLUjAMUmgtXAmLvfYWZHgI3Az9rWPAicdvdNZvYiMAl8NufYy+G2HocUIqAAVE8VpoMUIlD1ADQVCcFZ4Mns8ocd1mwA9mWXDwPrgZtzjlUmBCkEABSBqktxOkghAFCfCECBELj7mwBmdi+wAJjJWTYOvJtdvkjjYaS8Y1cwsylgCuDGZfN73Hp5UohAKgGQwaUSAwUgXoWeLDazLcDDwGZ3/yhnyTlgcXZ5cfbxdTnHruDu08A0wMSti6J//iCFAECaETgzOa6poA8pBAAUgdgVebL4JuAR4E53/2uHZYdoPHewj8bDRN+l8RxB+7EkKQCj0bxTUxCKSSECCkAaivyIiW3AUmDGzI6a2XYze7xtzXPAcjObBS7QCEPeseQoAqOXwh1cmc5MjidxGykC6SjyHMFjwGNd1nwAbGo7nHcsGQpAuTQdXC2FO39QAFKkHzqXQxGIRyp3fsOWyu2gCKRJ7yxuoQDEqc7TgQIQlgKQTxNBRhGIXyp3iqGk8vdVBNJX+4lAAUhLHaYDBSAsBaC7WodAEUhXVd93oAiEowAUV8sQKADVUKXpQAEISxHoTe1CkEIEFIDepD4dKALhKAD9qU0IUggAKAL9SnE6UADCUgT6V4sQpBABBSCMVIKQQgQUgPqodAhSCAAoAsMQ68NFKQQAFIG6qWQIFACB+KaDFCKgANRT5d5QpghIu7LvgPVD4sJSBMKrzESgAMhcypgOUrjzBwVAKjIRKAJS1KjunBWBsBSB4Up6IlAApB/DnA4UgLAUgNFIdiJQBGRQoe+0FYGwFIHRSW4iUAAkpBDTgQIQlgIwekmFQBGQYen3fQeKQDgKQHmSCIECIKPQy3SgAISlCJSrUAjMbD7wgrtv7nD9OuDR7MObgW8DZ4GngFPZ8e3ufqLXDaYQAQWgWroFQREIRwGIQ9cQmNlC4BXg853WuPsRYE22/iXgt8AyYK+77+5nYykEABSBKmt/uEgBCEsRiEfXELj7JeA2M/tjt7VmtgiYcPdZM1sGbDWzu4G3gPvd3YtsKoUIKAD1kMqdPygA0r/QzxFMAoeyyyeBXe7+kpn9ElgLHGldbGZTwBTAjcvmJxEAUAQkPoqADCJ0CDYDL2SXLwAHs8ungCXti919GpgGWDixzG8MvJnQFACJjQIgIQR7Q5mZGbAeOJwd2gE8YGbzgJXAG6H+rDIoAhIbRUBC6XkiMLNbgG+4+862q74M/N7d/559vAd4HngI2O/uxwfaaUkUAImNAiChFQ6Bu09kv/8ZaI8A7n4M2NLy8dvAusG3WB5FQGKjCMgwJPGGslFTACQ2CoAMU7I/dG5YFAGJjSIgw6aJIKMASGwUABkVhQBFQOKTQgQUgOqodQgUAIlNCgEARaBqahkCBUBilEIEFIBqql0IFAGJTQoBAEWgymoTAgVAYqMASCxq8fJRRUBiowhITCo9ESgAEhsFQGJU2YlAEZDYKAISq8pNBAqAxEYBkNhVaiJQBCQ2ioCkoBITgQIgsVEAJCXJTwSKgMRGEZDUJDsRKAASGwVAUpVkCBQBiU0KEVAApJOkQqAASGxSCAAoAjK3JEKgAEiMUoiAAiBFFHqy2Mzmm9lP57j+TjM7bWZHs18rzOxaM3vRzF4zs2fNzPrZoCIgsbm85qIiIJXSdSIws4XAK8Dnuyzd6+67Wz7vv4HT7r7JzF4EJoGXC29MAZDIpHDnDwqA9K7rRODul9z9NuB0l6VbzeyYme3L/vW/ATiQXXcYWF90U4qAxEYRkCoL9RzBSWCXu79kZr8E1gLjwLvZ9ReBFe2fZGZTwBTA2KcXKwASHQVA6iDUG8ouAAezy6eAJcA5YHF2bHH28RXcfdrdV7n7qrF5nwi0FZEwFAGpi1ATwQ7gD2b2LLASeBS4DtgI7KPxMNF3A/1ZIkOlAEjd9DwRmNktZvZ42+E9wNdoPKm8392PA88By81slsbEcGjQzYoMmyIgdVR4InD3iez3PwM72657G1jXduwDYNPgWxQZPgVA6iyJN5SJDFMKEVAAZJgUAqmtFAIAioAMn0IgtZRCBBQAGRWFQGolhQCAIiCjpRBILSgAIp0l/z+UiXSjCIjMTROBVJYCIFKMJgKpJEVApDhNBFIpCoBI7zQRSGUoAiL90UQgyVMARAajiUCSpgiIDE4TgSRJARAJRyGQ5KQQAQVAUqIQSDJSCAAoApIehUCSkEIEFABJlUIgUUshAKAISNoUAomSAiAyOnr5qERHERAZrUITgZnNB15w980drjfgGWAF8A5wH/CfwFPAqWzZdnc/MeB+pcIUAJFydA2BmS0EXgE+P8ey1cCYu99hZkeAjcA/gL3uvjvERqXaFAGR8nQNgbtfAm4zsz/Osews8GR2+cOW41vN7G7gLeB+d/e+dyqVpACIlC/IcwTu/qa7HzOze4EFwAxwEtjl7rcDS4G1If4sqQ5FQCQOwV41ZGZbgIeBze7+kZldAA5mV58CluR8zhQwBTD/EzeE2opETgEQiUuQicDMbgIeAe5y9/eywzuAB8xsHrASeKP989x92t1XufuqhZevYfmB8yG2IxFTBETi0/NEYGa3AN9w950th7fRePhnpvECIp4G9gDPAw8B+939eJGvv/zAec5Mjve6LYmcAiASL4vl+dvFi5b6f0xsv+KYglANKURAAZBUbZ343W/cfdUgXyPqdxY3HypSENKUQgBAERCJOgRNergoPSlEQAEQaUgiBKDpIBUpBAAUAZFWyYSgSdNBnBQAkXQl+UPnlh84r5eaRkQREElbchNBK00H5VIARKohyYmglaaDcigCItWR9ETQStPBaCgAItWT/ETQStPBcCkCItVUmYmglaaDsBQAkWqr1ETQStNBGIqASPVVciJopemgPwqASH1UPgSgdyX3KoUIKAAi4dQiBE0KwtxSCAAoAiKh1SoETXq46GopREABEBmOWoYANB00pRAAUAREhqm2IWiq63SgAIhIU2VfPtqLur3UVBEQkVa1nwhaVX06UABEJI8mgjZVnQ4UARHppNBEYGbzgRfcfXOH668FfgR8BpgFvgpc037M3T3EpkehKtOBAiAi3XSdCMxsIfAbYHKOZQ8Cp939i8AN2dq8Y0lJfTpQBESkiK4TgbtfAm4zsz/OsWwDsC+7fBhYD9ycc+zl/rdanhSngxQioACIxCHUk8XjwLvZ5YvAig7HrmBmU8BU9uEHM6/vfiPQfsJ7/Z+XbgTOlbeRgp6If59bG79Fv89MCvtMYY+gfYZ21X1rr0KF4BywOLu8OPv4upxjV3D3aWAawMxedfdVgfYzNNpnWNpnOCnsEbTP0Mzs1UG/RqhXDR0CNmaXNwA/73BMREQi03MIzOwWM3u87fBzwHIzmwUu0IhA3jEREYlM4YeG3H0i+/3PwM626z4ANrV9St6xuUz3sLZM2mdY2mc4KewRtM/QBt6nJfTSfhERGQK9s1hEpOZGFgIzm29mP53j+mvN7EUze83MnrWGq45FsE8zsx+Y2a/N7CdmNmZmd5rZaTM7mv0a+OVcAfZ51Z4ivT3XtezxLTPbNsrbM+/7mbOm9HOz4D5LPzcL7rP0c7PgPss+N8fM7Idm9gsze7rDmiDn5khCYIm8O7ngPlcDY+5+B3A9H78yaq+7r8l+nYhgn3l7iu72dPcjzT3S+FEkv+2w92Hp9P1sVfq5WXCfpZ+bBfeZt6fobs8Izs17gNfcfTWw1My+lLMmyLk5khC4+yV3vw04PceyDcCB7HLznch5x4am4D7PAk9mlz9sOb7VzI6Z2b5h/2um4D7z9hTj7QmAmS0CJtx9Njs0qtuz0/ezVennJsX2Wfq5Occe2pV6blJ8n2Wem/8LPJFNK5+k8cbcdkHOzZieI2h/J/KnOhwrlbu/6e7HzOxeYAEwA5wEdrn77cBSYG2Ze8zk7Sm627PFJB+/xHhkt2eH72e70s/NIvuM4dwseHuWfm4W3GdTWefm++7+N+AXwFl3/1POsiDnZkwhyHt3ct6x0pnZFuBhYLO7f0TjfRIHs6tPAUtK2lqrvD1FeXtmNgMvZpdHenvmfD/bRXFuFthnFOdmgX1GcW4WuT0zpZybZjZuZtcAXwFuMLO8f9kHOTdjCkES7042s5uAR4C73P297PAO4AEzmwesBGL4mUl5e4ru9oTGE3c0xtfD2aGR3Z4dvp/tSj83i+wzhnOz4O1Z+rlZcJ+lnpvAN4H/yiL1N2Bhzpog52YpIbBE3p3cYZ/baIyEM9mrBr4O7AG+BrwC7Hf34xHsM29PMd6eAF8Gfu/uf88+HuXt2f793B7puVlknzGcm0X2GcO5WWSfUO65+T3g62b2K+A8cGJY56beUCYiUnMxPTQkIiIlUAhERGpOIRARqTmFQESk5hQCEZGaUwhERGpOIRARqbn/B6dxG5w1wONQAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "a = np.array([1,2,3])\n",
    "z = np.array([[0,1,1],[1,0,1],[1,1,0]])\n",
    "x,y = np.meshgrid(a,a)\n",
    "plt.contourf(x,y,z,3)         "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = np.array([[0, 1, 2], [0, 1, 2]])\n",
    "y = np.array([[0, 0, 0], [1, 1, 1]])\n",
    "\n",
    "\n",
    "plt.plot(x, y,\n",
    "         color='red',  # 全部点设置为红色\n",
    "         marker='.',  # 点的形状为圆点\n",
    "         linestyle='')  # 线型为空，也即点与点之间不用线连接\n",
    "plt.grid(True)\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
